home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 September / CHIP Eylül 1996.iso / utils / povray / povsrc.sea / POVSRC / SOURCE / POLY.C < prev    next >
MacBinary  |  1993-07-29  |  19.0 KB  |  [TEXT/MPS ]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
66% dexvert Compact Compressed (Unix) (archive/compact) ext Supported
10% dexvert MacBinary (archive/macBinary) fallback Supported
10% dexvert Jesper Olsen Module (music/jesperOlsen) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Thu Jul 29 18:08:22 1993, modified Thu Jul 29 18:08:22 1993, creator 'MPS ', type ASCII, 18787 bytes "POLY.C" , at 0x49e3 428 bytes resource default (weak)
99% file data default
49% TrID Macintosh plain text (MacBinary) default
33% TrID TTComp archive compressed (bin-4K) default (weak)
16% TrID MacBinary 2 default (weak)
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[MPS ]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 06 50 4f 4c 59 2e 43 | 00 00 00 00 00 00 00 00 |..POLY.C|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 01 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 49 63 00 | 00 01 ac a8 7d fa d6 a8 |.....Ic.|....}...|
|00000060| 7d fa d6 00 00 08 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 93 35 00 00 |........|.....5..|
|00000080| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00000090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000000c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 0d 2a 20 |********|*****.* |
|000000d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 70 | | p|
|000000e0| 6f 6c 79 2e 63 0d 2a 0d | 2a 20 20 54 68 69 73 20 |oly.c.*.|* This |
|000000f0| 6d 6f 64 75 6c 65 20 69 | 6d 70 6c 65 6d 65 6e 74 |module i|mplement|
|00000100| 73 20 74 68 65 20 63 6f | 64 65 20 66 6f 72 20 67 |s the co|de for g|
|00000110| 65 6e 65 72 61 6c 20 33 | 20 76 61 72 69 61 62 6c |eneral 3| variabl|
|00000120| 65 20 70 6f 6c 79 6e 6f | 6d 69 61 6c 20 73 68 61 |e polyno|mial sha|
|00000130| 70 65 73 0d 2a 0d 2a 20 | 20 54 68 69 73 20 66 69 |pes.*.* | This fi|
|00000140| 6c 65 20 77 61 73 20 77 | 72 69 74 74 65 6e 20 62 |le was w|ritten b|
|00000150| 79 20 41 6c 65 78 61 6e | 64 65 72 20 45 6e 7a 6d |y Alexan|der Enzm|
|00000160| 61 6e 6e 2e 20 20 48 65 | 20 77 72 6f 74 65 20 74 |ann. He| wrote t|
|00000170| 68 65 20 63 6f 64 65 20 | 66 6f 72 0d 2a 20 20 34 |he code |for.* 4|
|00000180| 74 68 20 2d 20 36 74 68 | 20 6f 72 64 65 72 20 73 |th - 6th| order s|
|00000190| 68 61 70 65 73 20 61 6e | 64 20 67 65 6e 65 72 6f |hapes an|d genero|
|000001a0| 75 73 6c 79 20 70 72 6f | 76 69 64 65 64 20 75 73 |usly pro|vided us|
|000001b0| 20 74 68 65 73 65 20 65 | 6e 68 61 6e 63 65 6d 65 | these e|nhanceme|
|000001c0| 6e 74 73 2e 0d 2a 0d 2a | 20 20 66 72 6f 6d 20 50 |nts..*.*| from P|
|000001d0| 65 72 73 69 73 74 65 6e | 63 65 20 6f 66 20 56 69 |ersisten|ce of Vi|
|000001e0| 73 69 6f 6e 20 52 61 79 | 74 72 61 63 65 72 0d 2a |sion Ray|tracer.*|
|000001f0| 20 20 43 6f 70 79 72 69 | 67 68 74 20 31 39 39 33 | Copyri|ght 1993|
|00000200| 20 50 65 72 73 69 73 74 | 65 6e 63 65 20 6f 66 20 | Persist|ence of |
|00000210| 56 69 73 69 6f 6e 20 54 | 65 61 6d 0d 2a 2d 2d 2d |Vision T|eam.*---|
|00000220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2a 20 20 4e 4f 54 49 |--------|.* NOTI|
|00000270| 43 45 3a 20 54 68 69 73 | 20 73 6f 75 72 63 65 20 |CE: This| source |
|00000280| 63 6f 64 65 20 66 69 6c | 65 20 69 73 20 70 72 6f |code fil|e is pro|
|00000290| 76 69 64 65 64 20 73 6f | 20 74 68 61 74 20 75 73 |vided so| that us|
|000002a0| 65 72 73 20 6d 61 79 20 | 65 78 70 65 72 69 6d 65 |ers may |experime|
|000002b0| 6e 74 0d 2a 20 20 77 69 | 74 68 20 65 6e 68 61 6e |nt.* wi|th enhan|
|000002c0| 63 65 6d 65 6e 74 73 20 | 74 6f 20 50 4f 56 2d 52 |cements |to POV-R|
|000002d0| 61 79 20 61 6e 64 20 74 | 6f 20 70 6f 72 74 20 74 |ay and t|o port t|
|000002e0| 68 65 20 73 6f 66 74 77 | 61 72 65 20 74 6f 20 70 |he softw|are to p|
|000002f0| 6c 61 74 66 6f 72 6d 73 | 20 6f 74 68 65 72 20 0d |latforms| other .|
|00000300| 2a 20 20 74 68 61 6e 20 | 74 68 6f 73 65 20 73 75 |* than |those su|
|00000310| 70 70 6f 72 74 65 64 20 | 62 79 20 74 68 65 20 50 |pported |by the P|
|00000320| 4f 56 2d 52 61 79 20 54 | 65 61 6d 2e 20 20 54 68 |OV-Ray T|eam. Th|
|00000330| 65 72 65 20 61 72 65 20 | 73 74 72 69 63 74 20 72 |ere are |strict r|
|00000340| 75 6c 65 73 20 75 6e 64 | 65 72 0d 2a 20 20 77 68 |ules und|er.* wh|
|00000350| 69 63 68 20 79 6f 75 20 | 61 72 65 20 70 65 72 6d |ich you |are perm|
|00000360| 69 74 74 65 64 20 74 6f | 20 75 73 65 20 74 68 69 |itted to| use thi|
|00000370| 73 20 66 69 6c 65 2e 20 | 20 54 68 65 20 72 75 6c |s file. | The rul|
|00000380| 65 73 20 61 72 65 20 69 | 6e 20 74 68 65 20 66 69 |es are i|n the fi|
|00000390| 6c 65 0d 2a 20 20 6e 61 | 6d 65 64 20 50 4f 56 4c |le.* na|med POVL|
|000003a0| 45 47 41 4c 2e 44 4f 43 | 20 77 68 69 63 68 20 73 |EGAL.DOC| which s|
|000003b0| 68 6f 75 6c 64 20 62 65 | 20 64 69 73 74 72 69 62 |hould be| distrib|
|000003c0| 75 74 65 64 20 77 69 74 | 68 20 74 68 69 73 20 66 |uted wit|h this f|
|000003d0| 69 6c 65 2e 20 49 66 20 | 0d 2a 20 20 50 4f 56 4c |ile. If |.* POVL|
|000003e0| 45 47 41 4c 2e 44 4f 43 | 20 69 73 20 6e 6f 74 20 |EGAL.DOC| is not |
|000003f0| 61 76 61 69 6c 61 62 6c | 65 20 6f 72 20 66 6f 72 |availabl|e or for|
|00000400| 20 6d 6f 72 65 20 69 6e | 66 6f 20 70 6c 65 61 73 | more in|fo pleas|
|00000410| 65 20 63 6f 6e 74 61 63 | 74 20 74 68 65 20 50 4f |e contac|t the PO|
|00000420| 56 2d 52 61 79 0d 2a 20 | 20 54 65 61 6d 20 43 6f |V-Ray.* | Team Co|
|00000430| 6f 72 64 69 6e 61 74 6f | 72 20 62 79 20 6c 65 61 |ordinato|r by lea|
|00000440| 76 69 6e 67 20 61 20 6d | 65 73 73 61 67 65 20 69 |ving a m|essage i|
|00000450| 6e 20 43 6f 6d 70 75 53 | 65 72 76 65 27 73 20 47 |n CompuS|erve's G|
|00000460| 72 61 70 68 69 63 73 20 | 44 65 76 65 6c 6f 70 65 |raphics |Develope|
|00000470| 72 27 73 0d 2a 20 20 46 | 6f 72 75 6d 2e 20 20 54 |r's.* F|orum. T|
|00000480| 68 65 20 6c 61 74 65 73 | 74 20 76 65 72 73 69 6f |he lates|t versio|
|00000490| 6e 20 6f 66 20 50 4f 56 | 2d 52 61 79 20 6d 61 79 |n of POV|-Ray may|
|000004a0| 20 62 65 20 66 6f 75 6e | 64 20 74 68 65 72 65 20 | be foun|d there |
|000004b0| 61 73 20 77 65 6c 6c 2e | 0d 2a 0d 2a 20 54 68 69 |as well.|.*.* Thi|
|000004c0| 73 20 70 72 6f 67 72 61 | 6d 20 69 73 20 62 61 73 |s progra|m is bas|
|000004d0| 65 64 20 6f 6e 20 74 68 | 65 20 70 6f 70 75 6c 61 |ed on th|e popula|
|000004e0| 72 20 44 4b 42 20 72 61 | 79 74 72 61 63 65 72 20 |r DKB ra|ytracer |
|000004f0| 76 65 72 73 69 6f 6e 20 | 32 2e 31 32 2e 0d 2a 20 |version |2.12..* |
|00000500| 44 4b 42 54 72 61 63 65 | 20 77 61 73 20 6f 72 69 |DKBTrace| was ori|
|00000510| 67 69 6e 61 6c 6c 79 20 | 77 72 69 74 74 65 6e 20 |ginally |written |
|00000520| 62 79 20 44 61 76 69 64 | 20 4b 2e 20 42 75 63 6b |by David| K. Buck|
|00000530| 2e 0d 2a 20 44 4b 42 54 | 72 61 63 65 20 56 65 72 |..* DKBT|race Ver|
|00000540| 20 32 2e 30 2d 32 2e 31 | 32 20 77 65 72 65 20 77 | 2.0-2.1|2 were w|
|00000550| 72 69 74 74 65 6e 20 62 | 79 20 44 61 76 69 64 20 |ritten b|y David |
|00000560| 4b 2e 20 42 75 63 6b 20 | 26 20 41 61 72 6f 6e 20 |K. Buck |& Aaron |
|00000570| 41 2e 20 43 6f 6c 6c 69 | 6e 73 2e 0d 2a 0d 2a 2a |A. Colli|ns..*.**|
|00000580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000590| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000005a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000005b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000005c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0d 0d 23 69 |********|***/..#i|
|000005d0| 6e 63 6c 75 64 65 20 22 | 66 72 61 6d 65 2e 68 22 |nclude "|frame.h"|
|000005e0| 0d 23 69 6e 63 6c 75 64 | 65 20 22 76 65 63 74 6f |.#includ|e "vecto|
|000005f0| 72 2e 68 22 0d 23 69 6e | 63 6c 75 64 65 20 22 70 |r.h".#in|clude "p|
|00000600| 6f 76 70 72 6f 74 6f 2e | 68 22 0d 0d 2f 2a 20 42 |ovproto.|h"../* B|
|00000610| 61 73 69 63 20 66 6f 72 | 6d 20 6f 66 20 61 20 71 |asic for|m of a q|
|00000620| 75 61 72 74 69 63 20 65 | 71 75 61 74 69 6f 6e 0d |uartic e|quation.|
|00000630| 20 20 20 61 30 30 2a 78 | 5e 34 2b 61 30 31 2a 78 | a00*x|^4+a01*x|
|00000640| 5e 33 2a 79 2b 61 30 32 | 2a 78 5e 33 2a 7a 2b 61 |^3*y+a02|*x^3*z+a|
|00000650| 30 33 2a 78 5e 33 2b 61 | 30 34 2a 78 5e 32 2a 79 |03*x^3+a|04*x^2*y|
|00000660| 5e 32 2b 0d 20 20 20 61 | 30 35 2a 78 5e 32 2a 79 |^2+. a|05*x^2*y|
|00000670| 2a 7a 2b 61 30 36 2a 78 | 5e 32 2a 79 2b 61 30 37 |*z+a06*x|^2*y+a07|
|00000680| 2a 78 5e 32 2a 7a 5e 32 | 2b 61 30 38 2a 78 5e 32 |*x^2*z^2|+a08*x^2|
|00000690| 2a 7a 2b 61 30 39 2a 78 | 5e 32 2b 0d 20 20 20 61 |*z+a09*x|^2+. a|
|000006a0| 31 30 2a 78 2a 79 5e 33 | 2b 61 31 31 2a 78 2a 79 |10*x*y^3|+a11*x*y|
|000006b0| 5e 32 2a 7a 2b 61 31 32 | 2a 78 2a 79 5e 32 2b 61 |^2*z+a12|*x*y^2+a|
|000006c0| 31 33 2a 78 2a 79 2a 7a | 5e 32 2b 61 31 34 2a 78 |13*x*y*z|^2+a14*x|
|000006d0| 2a 79 2a 7a 2b 0d 20 20 | 20 61 31 35 2a 78 2a 79 |*y*z+. | a15*x*y|
|000006e0| 2b 61 31 36 2a 78 2a 7a | 5e 33 2b 61 31 37 2a 78 |+a16*x*z|^3+a17*x|
|000006f0| 2a 7a 5e 32 2b 61 31 38 | 2a 78 2a 7a 2b 61 31 39 |*z^2+a18|*x*z+a19|
|00000700| 2a 78 2b 61 32 30 2a 79 | 5e 34 2b 0d 20 20 20 61 |*x+a20*y|^4+. a|
|00000710| 32 31 2a 79 5e 33 2a 7a | 2b 61 32 32 2a 79 5e 33 |21*y^3*z|+a22*y^3|
|00000720| 2b 61 32 33 2a 79 5e 32 | 2a 7a 5e 32 2b 61 32 34 |+a23*y^2|*z^2+a24|
|00000730| 2a 79 5e 32 2a 7a 2b 61 | 32 35 2a 79 5e 32 2b 61 |*y^2*z+a|25*y^2+a|
|00000740| 32 36 2a 79 2a 7a 5e 33 | 2b 0d 20 20 20 61 32 37 |26*y*z^3|+. a27|
|00000750| 2a 79 2a 7a 5e 32 2b 61 | 32 38 2a 79 2a 7a 2b 61 |*y*z^2+a|28*y*z+a|
|00000760| 32 39 2a 79 2b 61 33 30 | 2a 7a 5e 34 2b 61 33 31 |29*y+a30|*z^4+a31|
|00000770| 2a 7a 5e 33 2b 61 33 32 | 2a 7a 5e 32 2b 61 33 33 |*z^3+a32|*z^2+a33|
|00000780| 2a 7a 2b 61 33 34 0d 2a | 2f 0d 0d 23 64 65 66 69 |*z+a34.*|/..#defi|
|00000790| 6e 65 20 50 4f 4c 59 4e | 4f 4d 49 41 4c 5f 54 4f |ne POLYN|OMIAL_TO|
|000007a0| 4c 45 52 41 4e 43 45 20 | 31 2e 30 65 2d 34 0d 23 |LERANCE |1.0e-4.#|
|000007b0| 64 65 66 69 6e 65 20 43 | 4f 45 46 46 5f 4c 49 4d |define C|OEFF_LIM|
|000007c0| 49 54 20 31 2e 30 65 2d | 32 30 0d 23 64 65 66 69 |IT 1.0e-|20.#defi|
|000007d0| 6e 65 20 42 49 4e 4f 4d | 53 49 5a 45 20 34 30 0d |ne BINOM|SIZE 40.|
|000007e0| 0d 2f 2a 20 54 68 65 20 | 66 6f 6c 6c 6f 77 69 6e |./* The |followin|
|000007f0| 67 20 74 61 62 6c 65 20 | 63 6f 6e 74 61 69 6e 73 |g table |contains|
|00000800| 20 74 68 65 20 62 69 6e | 6f 6d 69 61 6c 20 63 6f | the bin|omial co|
|00000810| 65 66 66 69 63 69 65 6e | 74 73 20 75 70 20 74 6f |efficien|ts up to|
|00000820| 20 31 35 20 2a 2f 0d 69 | 6e 74 20 62 69 6e 6f 6d | 15 */.i|nt binom|
|00000830| 69 61 6c 73 5b 31 35 5d | 5b 31 35 5d 20 3d 0d 20 |ials[15]|[15] =. |
|00000840| 20 7b 0d 20 20 20 20 7b | 20 20 0d 20 20 20 20 31 | {. {| . 1|
|00000850| 2c 20 20 30 2c 20 20 30 | 2c 20 20 30 2c 20 20 20 |, 0, 0|, 0, |
|00000860| 30 2c 20 20 20 30 2c 20 | 20 20 30 2c 20 20 20 30 |0, 0, | 0, 0|
|00000870| 2c 20 20 20 30 2c 20 20 | 20 30 2c 20 20 20 30 2c |, 0, | 0, 0,|
|00000880| 20 20 30 2c 20 20 30 2c | 20 20 30 2c 20 20 30 0d | 0, 0,| 0, 0.|
|00000890| 20 20 7d 0d 20 20 2c 0d | 20 20 20 20 7b 20 20 0d | }. ,.| { .|
|000008a0| 20 20 20 20 31 2c 20 20 | 31 2c 20 20 30 2c 20 20 | 1, |1, 0, |
|000008b0| 30 2c 20 20 20 30 2c 20 | 20 20 30 2c 20 20 20 30 |0, 0, | 0, 0|
|000008c0| 2c 20 20 20 30 2c 20 20 | 20 30 2c 20 20 20 30 2c |, 0, | 0, 0,|
|000008d0| 20 20 20 30 2c 20 20 30 | 2c 20 20 30 2c 20 20 30 | 0, 0|, 0, 0|
|000008e0| 2c 20 20 30 0d 20 20 7d | 0d 20 20 2c 0d 20 20 20 |, 0. }|. ,. |
|000008f0| 20 7b 20 20 0d 20 20 20 | 20 31 2c 20 20 32 2c 20 | { . | 1, 2, |
|00000900| 20 31 2c 20 20 30 2c 20 | 20 20 30 2c 20 20 20 30 | 1, 0, | 0, 0|
|00000910| 2c 20 20 20 30 2c 20 20 | 20 30 2c 20 20 20 30 2c |, 0, | 0, 0,|
|00000920| 20 20 20 30 2c 20 20 20 | 30 2c 20 20 30 2c 20 20 | 0, |0, 0, |
|00000930| 30 2c 20 20 30 2c 20 20 | 30 0d 20 20 7d 0d 20 20 |0, 0, |0. }. |
|00000940| 2c 0d 20 20 20 20 7b 20 | 20 0d 20 20 20 20 31 2c |,. { | . 1,|
|00000950| 20 20 33 2c 20 20 33 2c | 20 20 31 2c 20 20 20 30 | 3, 3,| 1, 0|
|00000960| 2c 20 20 20 30 2c 20 20 | 20 30 2c 20 20 20 30 2c |, 0, | 0, 0,|
|00000970| 20 20 20 30 2c 20 20 20 | 30 2c 20 20 20 30 2c 20 | 0, |0, 0, |
|00000980| 20 30 2c 20 20 30 2c 20 | 20 30 2c 20 20 30 0d 20 | 0, 0, | 0, 0. |
|00000990| 20 7d 0d 20 20 2c 0d 20 | 20 20 20 7b 20 20 0d 20 | }. ,. | { . |
|000009a0| 20 20 20 31 2c 20 20 34 | 2c 20 20 36 2c 20 20 34 | 1, 4|, 6, 4|
|000009b0| 2c 20 20 20 31 2c 20 20 | 20 30 2c 20 20 20 30 2c |, 1, | 0, 0,|
|000009c0| 20 20 20 30 2c 20 20 20 | 30 2c 20 20 20 30 2c 20 | 0, |0, 0, |
|000009d0| 20 20 30 2c 20 20 30 2c | 20 20 30 2c 20 20 30 2c | 0, 0,| 0, 0,|
|000009e0| 20 20 30 0d 20 20 7d 0d | 20 20 2c 0d 20 20 20 20 | 0. }.| ,. |
|000009f0| 7b 20 20 0d 20 20 20 20 | 31 2c 20 20 35 2c 20 31 |{ . |1, 5, 1|
|00000a00| 30 2c 20 31 30 2c 20 20 | 20 35 2c 20 20 20 31 2c |0, 10, | 5, 1,|
|00000a10| 20 20 20 30 2c 20 20 20 | 30 2c 20 20 20 30 2c 20 | 0, |0, 0, |
|00000a20| 20 20 30 2c 20 20 20 30 | 2c 20 20 30 2c 20 20 30 | 0, 0|, 0, 0|
|00000a30| 2c 20 20 30 2c 20 20 30 | 0d 20 20 7d 0d 20 20 2c |, 0, 0|. }. ,|
|00000a40| 0d 20 20 20 20 7b 20 20 | 0d 20 20 20 20 31 2c 20 |. { |. 1, |
|00000a50| 20 36 2c 20 31 35 2c 20 | 32 30 2c 20 20 31 35 2c | 6, 15, |20, 15,|
|00000a60| 20 20 20 36 2c 20 20 20 | 31 2c 20 20 20 30 2c 20 | 6, |1, 0, |
|00000a70| 20 20 30 2c 20 20 20 30 | 2c 20 20 20 30 2c 20 20 | 0, 0|, 0, |
|00000a80| 30 2c 20 20 30 2c 20 20 | 30 2c 20 20 30 0d 20 20 |0, 0, |0, 0. |
|00000a90| 7d 0d 20 20 2c 0d 20 20 | 20 20 7b 20 20 0d 20 20 |}. ,. | { . |
|00000aa0| 20 20 31 2c 20 20 37 2c | 20 32 31 2c 20 33 35 2c | 1, 7,| 21, 35,|
|00000ab0| 20 20 33 35 2c 20 20 32 | 31 2c 20 20 20 37 2c 20 | 35, 2|1, 7, |
|00000ac0| 20 20 31 2c 20 20 20 30 | 2c 20 20 20 30 2c 20 20 | 1, 0|, 0, |
|00000ad0| 20 30 2c 20 20 30 2c 20 | 20 30 2c 20 20 30 2c 20 | 0, 0, | 0, 0, |
|00000ae0| 20 30 0d 20 20 7d 0d 20 | 20 2c 0d 20 20 20 20 7b | 0. }. | ,. {|
|00000af0| 20 20 0d 20 20 20 20 31 | 2c 20 20 38 2c 20 32 38 | . 1|, 8, 28|
|00000b00| 2c 20 35 36 2c 20 20 37 | 30 2c 20 20 35 36 2c 20 |, 56, 7|0, 56, |
|00000b10| 20 32 38 2c 20 20 20 38 | 2c 20 20 20 31 2c 20 20 | 28, 8|, 1, |
|00000b20| 20 30 2c 20 20 20 30 2c | 20 20 30 2c 20 20 30 2c | 0, 0,| 0, 0,|
|00000b30| 20 20 30 2c 20 20 30 0d | 20 20 7d 0d 20 20 2c 0d | 0, 0.| }. ,.|
|00000b40| 20 20 20 20 7b 20 20 0d | 20 20 20 20 31 2c 20 20 | { .| 1, |
|00000b50| 39 2c 20 33 36 2c 20 38 | 34 2c 20 31 32 36 2c 20 |9, 36, 8|4, 126, |
|00000b60| 31 32 36 2c 20 20 38 34 | 2c 20 20 33 36 2c 20 20 |126, 84|, 36, |
|00000b70| 20 39 2c 20 20 20 31 2c | 20 20 20 30 2c 20 20 30 | 9, 1,| 0, 0|
|00000b80| 2c 20 20 30 2c 20 20 30 | 2c 20 20 30 0d 20 20 7d |, 0, 0|, 0. }|
|00000b90| 0d 20 20 2c 0d 20 20 20 | 20 7b 20 20 0d 20 20 20 |. ,. | { . |
|00000ba0| 20 31 2c 20 31 30 2c 20 | 34 35 2c 31 32 30 2c 20 | 1, 10, |45,120, |
|00000bb0| 32 31 30 2c 20 32 35 32 | 2c 20 32 31 30 2c 20 31 |210, 252|, 210, 1|
|00000bc0| 32 30 2c 20 20 34 35 2c | 20 20 31 30 2c 20 20 20 |20, 45,| 10, |
|00000bd0| 31 2c 20 20 30 2c 20 20 | 30 2c 20 20 30 2c 20 20 |1, 0, |0, 0, |
|00000be0| 30 0d 20 20 7d 0d 20 20 | 2c 0d 20 20 20 20 7b 20 |0. }. |,. { |
|00000bf0| 20 0d 20 20 20 20 31 2c | 20 31 31 2c 20 35 35 2c | . 1,| 11, 55,|
|00000c00| 31 36 35 2c 20 33 33 30 | 2c 20 34 36 32 2c 20 34 |165, 330|, 462, 4|
|00000c10| 36 32 2c 20 33 33 30 2c | 20 31 36 35 2c 20 20 35 |62, 330,| 165, 5|
|00000c20| 35 2c 20 20 31 31 2c 20 | 20 31 2c 20 20 30 2c 20 |5, 11, | 1, 0, |
|00000c30| 20 30 2c 20 20 30 0d 20 | 20 7d 0d 20 20 2c 0d 20 | 0, 0. | }. ,. |
|00000c40| 20 20 20 7b 20 20 0d 20 | 20 20 20 31 2c 20 31 32 | { . | 1, 12|
|00000c50| 2c 20 36 36 2c 32 32 30 | 2c 20 34 39 35 2c 20 37 |, 66,220|, 495, 7|
|00000c60| 39 32 2c 20 39 32 34 2c | 20 37 39 32 2c 20 34 39 |92, 924,| 792, 49|
|00000c70| 35 2c 20 32 32 30 2c 20 | 20 36 36 2c 20 31 32 2c |5, 220, | 66, 12,|
|00000c80| 20 20 31 2c 20 20 30 2c | 20 20 30 0d 20 20 7d 0d | 1, 0,| 0. }.|
|00000c90| 20 20 2c 0d 20 20 20 20 | 7b 20 20 0d 20 20 20 20 | ,. |{ . |
|00000ca0| 31 2c 20 31 33 2c 20 37 | 38 2c 32 38 36 2c 20 37 |1, 13, 7|8,286, 7|
|00000cb0| 31 35 2c 31 32 38 37 2c | 31 37 31 36 2c 31 37 31 |15,1287,|1716,171|
|00000cc0| 36 2c 31 32 38 37 2c 20 | 37 31 35 2c 20 32 38 36 |6,1287, |715, 286|
|00000cd0| 2c 20 37 38 2c 20 31 33 | 2c 20 20 31 2c 20 20 30 |, 78, 13|, 1, 0|
|00000ce0| 0d 20 20 7d 0d 20 20 2c | 0d 20 20 20 20 7b 20 20 |. }. ,|. { |
|00000cf0| 0d 20 20 20 20 31 2c 20 | 31 34 2c 20 39 31 2c 33 |. 1, |14, 91,3|
|00000d00| 36 34 2c 31 30 30 31 2c | 32 30 30 32 2c 33 30 30 |64,1001,|2002,300|
|00000d10| 33 2c 33 34 33 32 2c 33 | 30 30 33 2c 32 30 30 32 |3,3432,3|003,2002|
|00000d20| 2c 31 30 30 31 2c 33 36 | 34 2c 20 39 31 2c 20 31 |,1001,36|4, 91, 1|
|00000d30| 34 2c 20 20 31 0d 20 20 | 7d 0d 20 20 7d 3b 0d 0d |4, 1. |}. };..|
|00000d40| 44 42 4c 20 65 71 6e 5f | 76 5b 33 5d 5b 4d 41 58 |DBL eqn_|v[3][MAX|
|00000d50| 5f 4f 52 44 45 52 2b 31 | 5d 2c 20 65 71 6e 5f 76 |_ORDER+1|], eqn_v|
|00000d60| 74 5b 33 5d 5b 4d 41 58 | 5f 4f 52 44 45 52 2b 31 |t[3][MAX|_ORDER+1|
|00000d70| 5d 3b 0d 0d 4d 45 54 48 | 4f 44 53 20 50 6f 6c 79 |];..METH|ODS Poly|
|00000d80| 5f 4d 65 74 68 6f 64 73 | 20 3d 0d 20 20 7b 20 0d |_Methods| =. { .|
|00000d90| 20 20 41 6c 6c 5f 50 6f | 6c 79 5f 49 6e 74 65 72 | All_Po|ly_Inter|
|00000da0| 73 65 63 74 69 6f 6e 73 | 2c 0d 20 20 49 6e 73 69 |sections|,. Insi|
|00000db0| 64 65 5f 50 6f 6c 79 2c | 20 50 6f 6c 79 5f 4e 6f |de_Poly,| Poly_No|
|00000dc0| 72 6d 61 6c 2c 20 43 6f | 70 79 5f 50 6f 6c 79 2c |rmal, Co|py_Poly,|
|00000dd0| 0d 20 20 54 72 61 6e 73 | 6c 61 74 65 5f 50 6f 6c |. Trans|late_Pol|
|00000de0| 79 2c 20 52 6f 74 61 74 | 65 5f 50 6f 6c 79 2c 0d |y, Rotat|e_Poly,.|
|00000df0| 20 20 53 63 61 6c 65 5f | 50 6f 6c 79 2c 20 54 72 | Scale_|Poly, Tr|
|00000e00| 61 6e 73 66 6f 72 6d 5f | 50 6f 6c 79 2c 20 49 6e |ansform_|Poly, In|
|00000e10| 76 65 72 74 5f 50 6f 6c | 79 2c 20 44 65 73 74 72 |vert_Pol|y, Destr|
|00000e20| 6f 79 5f 50 6f 6c 79 0d | 7d 3b 0d 0d 65 78 74 65 |oy_Poly.|};..exte|
|00000e30| 72 6e 20 6c 6f 6e 67 20 | 52 61 79 5f 50 6f 6c 79 |rn long |Ray_Poly|
|00000e40| 5f 54 65 73 74 73 2c 20 | 52 61 79 5f 50 6f 6c 79 |_Tests, |Ray_Poly|
|00000e50| 5f 54 65 73 74 73 5f 53 | 75 63 63 65 65 64 65 64 |_Tests_S|ucceeded|
|00000e60| 3b 0d 65 78 74 65 72 6e | 20 75 6e 73 69 67 6e 65 |;.extern| unsigne|
|00000e70| 64 20 69 6e 74 20 4f 70 | 74 69 6f 6e 73 3b 0d 65 |d int Op|tions;.e|
|00000e80| 78 74 65 72 6e 20 69 6e | 74 20 53 68 61 64 6f 77 |xtern in|t Shadow|
|00000e90| 5f 54 65 73 74 5f 46 6c | 61 67 3b 0d 0d 2f 2a 20 |_Test_Fl|ag;../* |
|00000ea0| 75 6e 75 73 65 64 0d 73 | 74 61 74 69 63 20 44 42 |unused.s|tatic DB|
|00000eb0| 4c 20 65 76 61 6c 75 61 | 74 65 5f 6c 69 6e 65 61 |L evalua|te_linea|
|00000ec0| 72 20 50 41 52 41 4d 53 | 28 28 56 45 43 54 4f 52 |r PARAMS|((VECTOR|
|00000ed0| 20 2a 50 2c 20 44 42 4c | 20 2a 61 29 29 3b 0d 73 | *P, DBL| *a));.s|
|00000ee0| 74 61 74 69 63 20 44 42 | 4c 20 65 76 61 6c 75 61 |tatic DB|L evalua|
|00000ef0| 74 65 5f 71 75 61 64 72 | 61 74 69 63 20 50 41 52 |te_quadr|atic PAR|
|00000f00| 41 4d 53 28 28 56 45 43 | 54 4f 52 20 2a 50 2c 20 |AMS((VEC|TOR *P, |
|00000f10| 44 42 4c 20 2a 61 29 29 | 3b 0d 2a 2f 0d 0d 73 74 |DBL *a))|;.*/..st|
|00000f20| 61 74 69 63 20 69 6e 74 | 20 69 6e 74 65 72 73 65 |atic int| interse|
|00000f30| 63 74 20 50 41 52 41 4d | 53 28 28 52 41 59 20 2a |ct PARAM|S((RAY *|
|00000f40| 52 61 79 2c 20 69 6e 74 | 20 4f 72 64 65 72 2c 20 |Ray, int| Order, |
|00000f50| 44 42 4c 20 2a 43 6f 65 | 66 66 73 2c 20 69 6e 74 |DBL *Coe|ffs, int|
|00000f60| 20 53 74 75 72 6d 5f 46 | 6c 61 67 2c 0d 44 42 4c | Sturm_F|lag,.DBL|
|00000f70| 20 2a 44 65 70 74 68 73 | 29 29 3b 0d 73 74 61 74 | *Depths|));.stat|
|00000f80| 69 63 20 76 6f 69 64 20 | 6e 6f 72 6d 61 6c 30 20 |ic void |normal0 |
|00000f90| 50 41 52 41 4d 53 28 28 | 56 45 43 54 4f 52 20 2a |PARAMS((|VECTOR *|
|00000fa0| 52 65 73 75 6c 74 2c 20 | 69 6e 74 20 4f 72 64 65 |Result, |int Orde|
|00000fb0| 72 2c 20 44 42 4c 20 2a | 43 6f 65 66 66 73 2c 0d |r, DBL *|Coeffs,.|
|00000fc0| 56 45 43 54 4f 52 20 2a | 49 50 6f 69 6e 74 29 29 |VECTOR *|IPoint))|
|00000fd0| 3b 0d 73 74 61 74 69 63 | 20 76 6f 69 64 20 6e 6f |;.static| void no|
|00000fe0| 72 6d 61 6c 31 20 50 41 | 52 41 4d 53 28 28 56 45 |rmal1 PA|RAMS((VE|
|00000ff0| 43 54 4f 52 20 2a 52 65 | 73 75 6c 74 2c 20 69 6e |CTOR *Re|sult, in|
|00001000| 74 20 4f 72 64 65 72 2c | 20 44 42 4c 20 2a 43 6f |t Order,| DBL *Co|
|00001010| 65 66 66 73 2c 0d 56 45 | 43 54 4f 52 20 2a 49 50 |effs,.VE|CTOR *IP|
|00001020| 6f 69 6e 74 29 29 3b 0d | 73 74 61 74 69 63 20 44 |oint));.|static D|
|00001030| 42 4c 20 69 6e 73 69 64 | 65 20 50 41 52 41 4d 53 |BL insid|e PARAMS|
|00001040| 28 28 56 45 43 54 4f 52 | 20 2a 49 50 6f 69 6e 74 |((VECTOR| *IPoint|
|00001050| 2c 20 69 6e 74 20 4f 72 | 64 65 72 2c 20 44 42 4c |, int Or|der, DBL|
|00001060| 20 2a 43 6f 65 66 66 73 | 29 29 3b 0d 73 74 61 74 | *Coeffs|));.stat|
|00001070| 69 63 20 69 6e 74 20 69 | 6e 74 65 72 73 65 63 74 |ic int i|ntersect|
|00001080| 5f 6c 69 6e 65 61 72 20 | 50 41 52 41 4d 53 28 28 |_linear |PARAMS((|
|00001090| 52 41 59 20 2a 72 61 79 | 2c 20 44 42 4c 20 2a 43 |RAY *ray|, DBL *C|
|000010a0| 6f 65 66 66 73 2c 20 44 | 42 4c 20 2a 44 65 70 74 |oeffs, D|BL *Dept|
|000010b0| 68 73 29 29 3b 0d 73 74 | 61 74 69 63 20 69 6e 74 |hs));.st|atic int|
|000010c0| 20 69 6e 74 65 72 73 65 | 63 74 5f 71 75 61 64 72 | interse|ct_quadr|
|000010d0| 61 74 69 63 20 50 41 52 | 41 4d 53 28 28 52 41 59 |atic PAR|AMS((RAY|
|000010e0| 20 2a 72 61 79 2c 20 44 | 42 4c 20 2a 43 6f 65 66 | *ray, D|BL *Coef|
|000010f0| 66 73 2c 20 44 42 4c 20 | 2a 44 65 70 74 68 73 29 |fs, DBL |*Depths)|
|00001100| 29 3b 0d 73 74 61 74 69 | 63 20 69 6e 74 20 66 61 |);.stati|c int fa|
|00001110| 63 74 6f 72 5f 6f 75 74 | 20 50 41 52 41 4d 53 28 |ctor_out| PARAMS(|
|00001120| 28 69 6e 74 20 6e 2c 20 | 69 6e 74 20 69 2c 20 69 |(int n, |int i, i|
|00001130| 6e 74 20 2a 63 2c 20 69 | 6e 74 20 2a 73 29 29 3b |nt *c, i|nt *s));|
|00001140| 0d 73 74 61 74 69 63 20 | 6c 6f 6e 67 20 62 69 6e |.static |long bin|
|00001150| 6f 6d 69 61 6c 20 50 41 | 52 41 4d 53 28 28 69 6e |omial PA|RAMS((in|
|00001160| 74 20 6e 2c 20 69 6e 74 | 20 72 29 29 3b 0d 73 74 |t n, int| r));.st|
|00001170| 61 74 69 63 20 76 6f 69 | 64 20 66 61 63 74 6f 72 |atic voi|d factor|
|00001180| 31 20 50 41 52 41 4d 53 | 28 28 69 6e 74 20 6e 2c |1 PARAMS|((int n,|
|00001190| 20 69 6e 74 20 2a 63 2c | 20 69 6e 74 20 2a 73 29 | int *c,| int *s)|
|000011a0| 29 3b 0d 0d 69 6e 74 20 | 41 6c 6c 5f 50 6f 6c 79 |);..int |All_Poly|
|000011b0| 5f 49 6e 74 65 72 73 65 | 63 74 69 6f 6e 73 28 4f |_Interse|ctions(O|
|000011c0| 62 6a 65 63 74 2c 20 52 | 61 79 2c 20 44 65 70 74 |bject, R|ay, Dept|
|000011d0| 68 5f 53 74 61 63 6b 29 | 0d 4f 42 4a 45 43 54 20 |h_Stack)|.OBJECT |
|000011e0| 2a 4f 62 6a 65 63 74 3b | 0d 52 41 59 20 2a 52 61 |*Object;|.RAY *Ra|
|000011f0| 79 3b 0d 49 53 54 41 43 | 4b 20 2a 44 65 70 74 68 |y;.ISTAC|K *Depth|
|00001200| 5f 53 74 61 63 6b 3b 0d | 20 20 7b 0d 20 20 50 4f |_Stack;.| {. PO|
|00001210| 4c 59 20 2a 50 6f 6c 79 | 20 3d 20 28 50 4f 4c 59 |LY *Poly| = (POLY|
|00001220| 20 2a 29 20 4f 62 6a 65 | 63 74 3b 0d 20 20 44 42 | *) Obje|ct;. DB|
|00001230| 4c 20 44 65 70 74 68 73 | 5b 4d 41 58 5f 4f 52 44 |L Depths|[MAX_ORD|
|00001240| 45 52 5d 2c 20 6c 65 6e | 3b 0d 20 20 56 45 43 54 |ER], len|;. VECT|
|00001250| 4f 52 20 49 50 6f 69 6e | 74 2c 20 64 76 3b 0d 20 |OR IPoin|t, dv;. |
|00001260| 20 69 6e 74 20 63 6e 74 | 2c 20 69 2c 20 6a 2c 20 | int cnt|, i, j, |
|00001270| 49 6e 74 65 72 73 65 63 | 74 69 6f 6e 5f 46 6f 75 |Intersec|tion_Fou|
|00001280| 6e 64 3b 0d 20 20 52 41 | 59 20 4e 65 77 5f 52 61 |nd;. RA|Y New_Ra|
|00001290| 79 3b 0d 0d 20 20 2f 2a | 20 54 72 61 6e 73 66 6f |y;.. /*| Transfo|
|000012a0| 72 6d 20 74 68 65 20 72 | 61 79 20 69 6e 74 6f 20 |rm the r|ay into |
|000012b0| 74 68 65 20 70 6f 6c 79 | 6e 6f 6d 69 61 6c 27 73 |the poly|nomial's|
|000012c0| 20 73 70 61 63 65 20 2a | 2f 0d 20 20 69 66 20 28 | space *|/. if (|
|000012d0| 50 6f 6c 79 2d 3e 54 72 | 61 6e 73 20 21 3d 20 4e |Poly->Tr|ans != N|
|000012e0| 55 4c 4c 29 20 0d 20 20 | 20 20 7b 0d 20 20 20 20 |ULL) . | {. |
|000012f0| 4d 49 6e 76 54 72 61 6e | 73 50 6f 69 6e 74 28 26 |MInvTran|sPoint(&|
|00001300| 4e 65 77 5f 52 61 79 2e | 49 6e 69 74 69 61 6c 2c |New_Ray.|Initial,|
|00001310| 20 26 52 61 79 2d 3e 49 | 6e 69 74 69 61 6c 2c 20 | &Ray->I|nitial, |
|00001320| 50 6f 6c 79 2d 3e 54 72 | 61 6e 73 29 3b 0d 20 20 |Poly->Tr|ans);. |
|00001330| 20 20 4d 49 6e 76 54 72 | 61 6e 73 44 69 72 65 63 | MInvTr|ansDirec|
|00001340| 74 69 6f 6e 28 26 4e 65 | 77 5f 52 61 79 2e 44 69 |tion(&Ne|w_Ray.Di|
|00001350| 72 65 63 74 69 6f 6e 2c | 20 26 52 61 79 2d 3e 44 |rection,| &Ray->D|
|00001360| 69 72 65 63 74 69 6f 6e | 2c 20 50 6f 6c 79 2d 3e |irection|, Poly->|
|00001370| 54 72 61 6e 73 29 3b 0d | 20 20 20 20 7d 0d 20 20 |Trans);.| }. |
|00001380| 65 6c 73 65 20 0d 20 20 | 20 20 7b 0d 20 20 20 20 |else . | {. |
|00001390| 4e 65 77 5f 52 61 79 2e | 49 6e 69 74 69 61 6c 20 |New_Ray.|Initial |
|000013a0| 20 20 3d 20 52 61 79 2d | 3e 49 6e 69 74 69 61 6c | = Ray-|>Initial|
|000013b0| 3b 0d 20 20 20 20 4e 65 | 77 5f 52 61 79 2e 44 69 |;. Ne|w_Ray.Di|
|000013c0| 72 65 63 74 69 6f 6e 20 | 3d 20 52 61 79 2d 3e 44 |rection |= Ray->D|
|000013d0| 69 72 65 63 74 69 6f 6e | 3b 0d 20 20 20 20 7d 0d |irection|;. }.|
|000013e0| 0d 20 20 56 44 6f 74 28 | 6c 65 6e 2c 20 4e 65 77 |. VDot(|len, New|
|000013f0| 5f 52 61 79 2e 44 69 72 | 65 63 74 69 6f 6e 2c 20 |_Ray.Dir|ection, |
|00001400| 4e 65 77 5f 52 61 79 2e | 44 69 72 65 63 74 69 6f |New_Ray.|Directio|
|00001410| 6e 29 3b 0d 20 20 69 66 | 20 28 6c 65 6e 20 3d 3d |n);. if| (len ==|
|00001420| 20 30 2e 30 29 0d 20 20 | 20 20 72 65 74 75 72 6e | 0.0). | return|
|00001430| 20 30 3b 0d 20 20 6c 65 | 6e 20 3d 20 31 2e 30 20 | 0;. le|n = 1.0 |
|00001440| 2f 20 73 71 72 74 28 6c | 65 6e 29 3b 0d 20 20 56 |/ sqrt(l|en);. V|
|00001450| 53 63 61 6c 65 45 71 28 | 4e 65 77 5f 52 61 79 2e |ScaleEq(|New_Ray.|
|00001460| 44 69 72 65 63 74 69 6f | 6e 2c 20 6c 65 6e 29 3b |Directio|n, len);|
|00001470| 0d 0d 20 20 49 6e 74 65 | 72 73 65 63 74 69 6f 6e |.. Inte|rsection|
|00001480| 5f 46 6f 75 6e 64 20 3d | 20 46 41 4c 53 45 3b 0d |_Found =| FALSE;.|
|00001490| 20 20 52 61 79 5f 50 6f | 6c 79 5f 54 65 73 74 73 | Ray_Po|ly_Tests|
|000014a0| 2b 2b 3b 0d 0d 20 20 69 | 66 20 28 50 6f 6c 79 2d |++;.. i|f (Poly-|
|000014b0| 3e 4f 72 64 65 72 20 3d | 3d 20 31 29 0d 20 20 20 |>Order =|= 1). |
|000014c0| 20 63 6e 74 20 3d 20 69 | 6e 74 65 72 73 65 63 74 | cnt = i|ntersect|
|000014d0| 5f 6c 69 6e 65 61 72 28 | 26 4e 65 77 5f 52 61 79 |_linear(|&New_Ray|
|000014e0| 2c 20 50 6f 6c 79 2d 3e | 43 6f 65 66 66 73 2c 20 |, Poly->|Coeffs, |
|000014f0| 44 65 70 74 68 73 29 3b | 0d 20 20 65 6c 73 65 20 |Depths);|. else |
|00001500| 69 66 20 28 50 6f 6c 79 | 2d 3e 4f 72 64 65 72 20 |if (Poly|->Order |
|00001510| 3d 3d 20 32 29 0d 20 20 | 20 20 63 6e 74 20 3d 20 |== 2). | cnt = |
|00001520| 69 6e 74 65 72 73 65 63 | 74 5f 71 75 61 64 72 61 |intersec|t_quadra|
|00001530| 74 69 63 28 26 4e 65 77 | 5f 52 61 79 2c 20 50 6f |tic(&New|_Ray, Po|
|00001540| 6c 79 2d 3e 43 6f 65 66 | 66 73 2c 20 44 65 70 74 |ly->Coef|fs, Dept|
|00001550| 68 73 29 3b 0d 20 20 65 | 6c 73 65 0d 20 20 20 20 |hs);. e|lse. |
|00001560| 63 6e 74 20 3d 20 69 6e | 74 65 72 73 65 63 74 28 |cnt = in|tersect(|
|00001570| 26 4e 65 77 5f 52 61 79 | 2c 20 50 6f 6c 79 2d 3e |&New_Ray|, Poly->|
|00001580| 4f 72 64 65 72 2c 20 50 | 6f 6c 79 2d 3e 43 6f 65 |Order, P|oly->Coe|
|00001590| 66 66 73 2c 20 50 6f 6c | 79 2d 3e 53 74 75 72 6d |ffs, Pol|y->Sturm|
|000015a0| 5f 46 6c 61 67 2c 0d 20 | 20 20 20 20 20 44 65 70 |_Flag,. | Dep|
|000015b0| 74 68 73 29 3b 0d 20 20 | 69 66 20 28 63 6e 74 20 |ths);. |if (cnt |
|000015c0| 3e 20 30 29 20 52 61 79 | 5f 50 6f 6c 79 5f 54 65 |> 0) Ray|_Poly_Te|
|000015d0| 73 74 73 5f 53 75 63 63 | 65 65 64 65 64 2b 2b 3b |sts_Succ|eeded++;|
|000015e0| 0d 0d 20 20 66 6f 72 20 | 28 69 3d 30 3b 69 3c 63 |.. for |(i=0;i<c|
|000015f0| 6e 74 3b 69 2b 2b 29 20 | 0d 20 20 20 20 7b 0d 20 |nt;i++) |. {. |
|00001600| 20 20 20 69 66 20 28 44 | 65 70 74 68 73 5b 69 5d | if (D|epths[i]|
|00001610| 20 3c 20 50 4f 4c 59 4e | 4f 4d 49 41 4c 5f 54 4f | < POLYN|OMIAL_TO|
|00001620| 4c 45 52 41 4e 43 45 29 | 20 67 6f 74 6f 20 6c 30 |LERANCE)| goto l0|
|00001630| 3b 0d 20 20 20 20 66 6f | 72 20 28 6a 3d 30 3b 6a |;. fo|r (j=0;j|
|00001640| 3c 69 3b 6a 2b 2b 29 0d | 20 20 20 20 20 20 69 66 |<i;j++).| if|
|00001650| 20 28 44 65 70 74 68 73 | 5b 69 5d 20 3d 3d 20 44 | (Depths|[i] == D|
|00001660| 65 70 74 68 73 5b 6a 5d | 29 20 67 6f 74 6f 20 6c |epths[j]|) goto l|
|00001670| 30 3b 0d 20 20 20 20 56 | 53 63 61 6c 65 28 49 50 |0;. V|Scale(IP|
|00001680| 6f 69 6e 74 2c 20 4e 65 | 77 5f 52 61 79 2e 44 69 |oint, Ne|w_Ray.Di|
|00001690| 72 65 63 74 69 6f 6e 2c | 20 44 65 70 74 68 73 5b |rection,| Depths[|
|000016a0| 69 5d 29 3b 0d 20 20 20 | 20 56 41 64 64 45 71 28 |i]);. | VAddEq(|
|000016b0| 49 50 6f 69 6e 74 2c 20 | 4e 65 77 5f 52 61 79 2e |IPoint, |New_Ray.|
|000016c0| 49 6e 69 74 69 61 6c 29 | 3b 0d 20 20 20 20 2f 2a |Initial)|;. /*|
|000016d0| 20 54 72 61 6e 73 66 6f | 72 6d 20 74 68 65 20 70 | Transfo|rm the p|
|000016e0| 6f 69 6e 74 20 69 6e 74 | 6f 20 77 6f 72 6c 64 20 |oint int|o world |
|000016f0| 73 70 61 63 65 20 2a 2f | 0d 20 20 20 20 69 66 20 |space */|. if |
|00001700| 28 50 6f 6c 79 2d 3e 54 | 72 61 6e 73 20 21 3d 20 |(Poly->T|rans != |
|00001710| 4e 55 4c 4c 29 0d 20 20 | 20 20 20 20 4d 54 72 61 |NULL). | MTra|
|00001720| 6e 73 50 6f 69 6e 74 28 | 26 49 50 6f 69 6e 74 2c |nsPoint(|&IPoint,|
|00001730| 20 26 49 50 6f 69 6e 74 | 2c 20 50 6f 6c 79 2d 3e | &IPoint|, Poly->|
|00001740| 54 72 61 6e 73 29 3b 0d | 0d 20 20 20 20 56 53 75 |Trans);.|. VSu|
|00001750| 62 28 64 76 2c 20 49 50 | 6f 69 6e 74 2c 20 52 61 |b(dv, IP|oint, Ra|
|00001760| 79 2d 3e 49 6e 69 74 69 | 61 6c 29 3b 0d 20 20 20 |y->Initi|al);. |
|00001770| 20 56 4c 65 6e 67 74 68 | 28 6c 65 6e 2c 20 64 76 | VLength|(len, dv|
|00001780| 29 3b 0d 20 20 20 20 69 | 66 20 28 50 6f 69 6e 74 |);. i|f (Point|
|00001790| 5f 49 6e 5f 43 6c 69 70 | 28 26 49 50 6f 69 6e 74 |_In_Clip|(&IPoint|
|000017a0| 2c 20 4f 62 6a 65 63 74 | 2d 3e 43 6c 69 70 29 29 |, Object|->Clip))|
|000017b0| 0d 20 20 20 20 20 20 7b | 0d 20 20 20 20 20 20 70 |. {|. p|
|000017c0| 75 73 68 5f 65 6e 74 72 | 79 28 6c 65 6e 2c 49 50 |ush_entr|y(len,IP|
|000017d0| 6f 69 6e 74 2c 4f 62 6a | 65 63 74 2c 44 65 70 74 |oint,Obj|ect,Dept|
|000017e0| 68 5f 53 74 61 63 6b 29 | 3b 0d 20 20 20 20 20 20 |h_Stack)|;. |
|000017f0| 49 6e 74 65 72 73 65 63 | 74 69 6f 6e 5f 46 6f 75 |Intersec|tion_Fou|
|00001800| 6e 64 20 3d 20 54 52 55 | 45 3b 0d 20 20 20 20 20 |nd = TRU|E;. |
|00001810| 20 7d 0d 6c 30 3a 3b 0d | 20 20 20 20 7d 0d 20 20 | }.l0:;.| }. |
|00001820| 72 65 74 75 72 6e 20 28 | 49 6e 74 65 72 73 65 63 |return (|Intersec|
|00001830| 74 69 6f 6e 5f 46 6f 75 | 6e 64 29 3b 0d 20 20 7d |tion_Fou|nd);. }|
|00001840| 0d 0d 2f 2a 20 46 6f 72 | 20 73 70 65 65 64 75 70 |../* For| speedup|
|00001850| 20 6f 66 20 6c 6f 77 20 | 6f 72 64 65 72 20 70 6f | of low |order po|
|00001860| 6c 79 6e 6f 6d 69 61 6c | 73 2c 20 65 78 70 61 6e |lynomial|s, expan|
|00001870| 64 20 6f 75 74 20 74 68 | 65 20 74 65 72 6d 73 0d |d out th|e terms.|
|00001880| 20 20 20 69 6e 76 6f 6c | 76 65 64 20 69 6e 20 65 | invol|ved in e|
|00001890| 76 61 6c 75 61 74 69 6e | 67 20 74 68 65 20 70 6f |valuatin|g the po|
|000018a0| 6c 79 2e 20 2a 2f 0d 2f | 2a 20 75 6e 75 73 65 64 |ly. */./|* unused|
|000018b0| 0d 73 74 61 74 69 63 20 | 44 42 4c 0d 65 76 61 6c |.static |DBL.eval|
|000018c0| 75 61 74 65 5f 6c 69 6e | 65 61 72 28 50 2c 20 61 |uate_lin|ear(P, a|
|000018d0| 29 0d 20 20 20 56 45 43 | 54 4f 52 20 2a 50 3b 0d |). VEC|TOR *P;.|
|000018e0| 20 20 20 44 42 4c 20 2a | 61 3b 0d 7b 0d 20 20 20 | DBL *|a;.{. |
|000018f0| 72 65 74 75 72 6e 20 28 | 61 5b 30 5d 20 2a 20 50 |return (|a[0] * P|
|00001900| 2d 3e 78 29 20 2b 20 28 | 61 5b 31 5d 20 2a 20 50 |->x) + (|a[1] * P|
|00001910| 2d 3e 79 29 20 2b 20 28 | 61 5b 32 5d 20 2a 20 50 |->y) + (|a[2] * P|
|00001920| 2d 3e 7a 29 20 2b 20 61 | 5b 33 5d 3b 0d 7d 0d 0d |->z) + a|[3];.}..|
|00001930| 73 74 61 74 69 63 20 44 | 42 4c 0d 65 76 61 6c 75 |static D|BL.evalu|
|00001940| 61 74 65 5f 71 75 61 64 | 72 61 74 69 63 28 50 2c |ate_quad|ratic(P,|
|00001950| 20 61 29 0d 20 20 20 56 | 45 43 54 4f 52 20 2a 50 | a). V|ECTOR *P|
|00001960| 3b 0d 20 20 20 44 42 4c | 20 2a 61 3b 0d 7b 0d 20 |;. DBL| *a;.{. |
|00001970| 20 20 44 42 4c 20 78 2c | 20 79 2c 20 7a 3b 0d 0d | DBL x,| y, z;..|
|00001980| 20 20 20 78 20 3d 20 50 | 2d 3e 78 3b 20 79 20 3d | x = P|->x; y =|
|00001990| 20 50 2d 3e 79 3b 20 7a | 20 3d 20 50 2d 3e 7a 3b | P->y; z| = P->z;|
|000019a0| 0d 20 20 20 72 65 74 75 | 72 6e 20 20 61 5b 30 5d |. retu|rn a[0]|
|000019b0| 20 2a 20 78 20 2a 20 78 | 20 2b 20 61 5b 31 5d 20 | * x * x| + a[1] |
|000019c0| 2a 20 78 20 2a 20 79 20 | 2b 20 61 5b 32 5d 20 2a |* x * y |+ a[2] *|
|000019d0| 20 78 20 2a 20 7a 20 2b | 0d 20 20 20 20 20 20 20 | x * z +|. |
|000019e0| 20 20 20 20 61 5b 33 5d | 20 2a 20 78 20 20 20 20 | a[3]| * x |
|000019f0| 20 2b 20 61 5b 34 5d 20 | 2a 20 79 20 2a 20 79 20 | + a[4] |* y * y |
|00001a00| 2b 20 61 5b 35 5d 20 2a | 20 79 20 2a 20 7a 20 2b |+ a[5] *| y * z +|
|00001a10| 0d 20 20 20 20 20 20 20 | 20 20 20 20 61 5b 36 5d |. | a[6]|
|00001a20| 20 2a 20 79 20 20 20 20 | 20 2b 20 61 5b 37 5d 20 | * y | + a[7] |
|00001a30| 2a 20 7a 20 2a 20 7a 20 | 2b 20 61 5b 38 5d 20 2a |* z * z |+ a[8] *|
|00001a40| 20 7a 20 20 20 20 20 2b | 0d 20 20 20 20 20 20 20 | z +|. |
|00001a50| 20 20 20 20 61 5b 39 5d | 3b 0d 7d 0d 2a 2f 0d 2f | a[9]|;.}.*/./|
|00001a60| 2a 20 52 65 6d 6f 76 65 | 20 61 6c 6c 20 66 61 63 |* Remove| all fac|
|00001a70| 74 6f 72 73 20 6f 66 20 | 69 20 66 72 6f 6d 20 6e |tors of |i from n|
|00001a80| 2e 20 2a 2f 0d 73 74 61 | 74 69 63 20 69 6e 74 0d |. */.sta|tic int.|
|00001a90| 66 61 63 74 6f 72 5f 6f | 75 74 28 6e 2c 20 69 2c |factor_o|ut(n, i,|
|00001aa0| 20 63 2c 20 73 29 0d 69 | 6e 74 20 6e 2c 20 69 2c | c, s).i|nt n, i,|
|00001ab0| 20 2a 63 2c 20 2a 73 3b | 0d 20 20 7b 0d 20 20 77 | *c, *s;|. {. w|
|00001ac0| 68 69 6c 65 20 28 21 28 | 6e 20 25 20 69 29 29 20 |hile (!(|n % i)) |
|00001ad0| 0d 20 20 20 20 7b 0d 20 | 20 20 20 6e 20 2f 3d 20 |. {. | n /= |
|00001ae0| 69 3b 0d 20 20 20 20 73 | 5b 28 2a 63 29 2b 2b 5d |i;. s|[(*c)++]|
|00001af0| 20 3d 20 69 3b 0d 20 20 | 20 20 7d 0d 20 20 72 65 | = i;. | }. re|
|00001b00| 74 75 72 6e 20 6e 3b 0d | 20 20 7d 0d 0d 2f 2a 20 |turn n;.| }../* |
|00001b10| 46 69 6e 64 20 61 6c 6c | 20 70 72 69 6d 65 20 66 |Find all| prime f|
|00001b20| 61 63 74 6f 72 73 20 6f | 66 20 6e 2e 20 28 4e 6f |actors o|f n. (No|
|00001b30| 74 65 20 74 68 61 74 20 | 6e 20 6d 75 73 74 20 62 |te that |n must b|
|00001b40| 65 20 6c 65 73 73 20 74 | 68 61 6e 20 32 5e 31 35 |e less t|han 2^15|
|00001b50| 20 2a 2f 0d 73 74 61 74 | 69 63 20 76 6f 69 64 0d | */.stat|ic void.|
|00001b60| 66 61 63 74 6f 72 31 28 | 6e 2c 20 63 2c 20 73 29 |factor1(|n, c, s)|
|00001b70| 0d 69 6e 74 20 6e 2c 20 | 2a 63 2c 20 2a 73 3b 0d |.int n, |*c, *s;.|
|00001b80| 20 20 7b 0d 20 20 69 6e | 74 20 69 2c 6b 3b 0d 20 | {. in|t i,k;. |
|00001b90| 20 2f 2a 20 46 69 72 73 | 74 20 66 61 63 74 6f 72 | /* Firs|t factor|
|00001ba0| 20 6f 75 74 20 61 6e 79 | 20 32 73 20 2a 2f 0d 20 | out any| 2s */. |
|00001bb0| 20 6e 20 3d 20 66 61 63 | 74 6f 72 5f 6f 75 74 28 | n = fac|tor_out(|
|00001bc0| 6e 2c 20 32 2c 20 63 2c | 20 73 29 3b 0d 20 20 2f |n, 2, c,| s);. /|
|00001bd0| 2a 20 4e 6f 77 20 61 6e | 79 20 6f 64 64 20 66 61 |* Now an|y odd fa|
|00001be0| 63 74 6f 72 73 20 2a 2f | 0d 20 20 6b 20 3d 20 28 |ctors */|. k = (|
|00001bf0| 69 6e 74 29 73 71 72 74 | 28 6e 29 20 2b 20 31 3b |int)sqrt|(n) + 1;|
|00001c00| 0d 20 20 66 6f 72 20 28 | 69 3d 33 3b 6e 3e 31 20 |. for (|i=3;n>1 |
|00001c10| 26 26 20 69 3c 3d 6b 3b | 69 2b 3d 32 29 0d 20 20 |&& i<=k;|i+=2). |
|00001c20| 20 20 69 66 20 28 21 28 | 6e 25 69 29 29 20 0d 20 | if (!(|n%i)) . |
|00001c30| 20 20 20 7b 0d 20 20 20 | 20 6e 20 3d 20 66 61 63 | {. | n = fac|
|00001c40| 74 6f 72 5f 6f 75 74 28 | 6e 2c 20 69 2c 20 63 2c |tor_out(|n, i, c,|
|00001c50| 20 73 29 3b 0d 20 20 20 | 20 6b 20 3d 20 28 69 6e | s);. | k = (in|
|00001c60| 74 29 73 71 72 74 28 6e | 29 2b 31 3b 0d 20 20 20 |t)sqrt(n|)+1;. |
|00001c70| 20 7d 0d 20 20 69 66 20 | 28 6e 3e 31 29 0d 20 20 | }. if |(n>1). |
|00001c80| 20 20 73 5b 28 2a 63 29 | 2b 2b 5d 20 3d 20 6e 3b | s[(*c)|++] = n;|
|00001c90| 0d 20 20 7d 0d 0d 2f 2a | 20 43 61 6c 63 75 6c 61 |. }../*| Calcula|
|00001ca0| 74 65 20 74 68 65 20 62 | 69 6e 6f 6d 69 61 6c 20 |te the b|inomial |
|00001cb0| 63 6f 65 66 66 69 63 65 | 6e 74 20 6f 66 20 6e 2c |coeffice|nt of n,|
|00001cc0| 72 2e 20 2a 2f 0d 73 74 | 61 74 69 63 0d 6c 6f 6e |r. */.st|atic.lon|
|00001cd0| 67 0d 62 69 6e 6f 6d 69 | 61 6c 28 6e 2c 20 72 29 |g.binomi|al(n, r)|
|00001ce0| 0d 69 6e 74 20 6e 2c 20 | 72 3b 0d 20 20 7b 0d 20 |.int n, |r;. {. |
|00001cf0| 20 69 6e 74 20 68 2c 69 | 2c 6a 2c 6b 2c 6c 3b 0d | int h,i|,j,k,l;.|
|00001d00| 20 20 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 | unsign|ed long |
|00001d10| 72 65 73 75 6c 74 3b 0d | 20 20 73 74 61 74 69 63 |result;.| static|
|00001d20| 20 69 6e 74 20 73 74 61 | 63 6b 31 5b 42 49 4e 4f | int sta|ck1[BINO|
|00001d30| 4d 53 49 5a 45 5d 2c 20 | 73 74 61 63 6b 32 5b 42 |MSIZE], |stack2[B|
|00001d40| 49 4e 4f 4d 53 49 5a 45 | 5d 3b 0d 20 20 69 66 20 |INOMSIZE|];. if |
|00001d50| 28 6e 3c 30 20 7c 7c 20 | 72 3c 30 20 7c 7c 20 72 |(n<0 || |r<0 || r|
|00001d60| 3e 6e 29 0d 20 20 20 20 | 72 65 73 75 6c 74 20 3d |>n). |result =|
|00001d70| 20 30 4c 3b 0d 20 20 65 | 6c 73 65 20 69 66 20 28 | 0L;. e|lse if (|
|00001d80| 72 3d 3d 6e 29 0d 20 20 | 20 20 72 65 73 75 6c 74 |r==n). | result|
|00001d90| 20 3d 20 31 4c 3b 0d 20 | 20 65 6c 73 65 20 69 66 | = 1L;. | else if|
|00001da0| 20 28 72 20 3c 20 31 35 | 20 26 26 20 6e 20 3c 20 | (r < 15| && n < |
|00001db0| 31 35 29 0d 20 20 20 20 | 72 65 73 75 6c 74 20 3d |15). |result =|
|00001dc0| 20 28 6c 6f 6e 67 29 62 | 69 6e 6f 6d 69 61 6c 73 | (long)b|inomials|
|00001dd0| 5b 6e 5d 5b 72 5d 3b 0d | 20 20 65 6c 73 65 20 0d |[n][r];.| else .|
|00001de0| 20 20 20 20 7b 0d 20 20 | 20 20 6a 20 3d 20 30 3b | {. | j = 0;|
|00001df0| 0d 20 20 20 20 66 6f 72 | 20 28 69 3d 72 2b 31 3b |. for| (i=r+1;|
|00001e00| 69 3c 3d 6e 3b 69 2b 2b | 29 0d 20 20 20 20 20 20 |i<=n;i++|). |
|00001e10| 73 74 61 63 6b 31 5b 6a | 2b 2b 5d 20 3d 20 69 3b |stack1[j|++] = i;|
|00001e20| 0d 20 20 20 20 66 6f 72 | 20 28 69 3d 32 3b 69 3c |. for| (i=2;i<|
|00001e30| 3d 28 6e 2d 72 29 3b 69 | 2b 2b 29 20 0d 20 20 20 |=(n-r);i|++) . |
|00001e40| 20 20 20 7b 0d 20 20 20 | 20 20 20 68 20 3d 20 30 | {. | h = 0|
|00001e50| 3b 0d 20 20 20 20 20 20 | 66 61 63 74 6f 72 31 28 |;. |factor1(|
|00001e60| 69 2c 20 26 68 2c 20 73 | 74 61 63 6b 32 29 3b 0d |i, &h, s|tack2);.|
|00001e70| 20 20 20 20 20 20 66 6f | 72 20 28 6b 3d 30 3b 6b | fo|r (k=0;k|
|00001e80| 3c 68 3b 6b 2b 2b 29 20 | 0d 20 20 20 20 20 20 20 |<h;k++) |. |
|00001e90| 20 7b 0d 20 20 20 20 20 | 20 20 20 66 6f 72 20 28 | {. | for (|
|00001ea0| 6c 3d 30 3b 6c 3c 6a 3b | 6c 2b 2b 29 0d 20 20 20 |l=0;l<j;|l++). |
|00001eb0| 20 20 20 20 20 20 20 69 | 66 20 28 21 28 73 74 61 | i|f (!(sta|
|00001ec0| 63 6b 31 5b 6c 5d 20 25 | 20 73 74 61 63 6b 32 5b |ck1[l] %| stack2[|
|00001ed0| 6b 5d 29 29 20 0d 20 20 | 20 20 20 20 20 20 20 20 |k])) . | |
|00001ee0| 7b 0d 20 20 20 20 20 20 | 20 20 20 20 73 74 61 63 |{. | stac|
|00001ef0| 6b 31 5b 6c 5d 20 2f 3d | 20 73 74 61 63 6b 32 5b |k1[l] /=| stack2[|
|00001f00| 6b 5d 3b 0d 20 20 20 20 | 20 20 20 20 20 20 67 6f |k];. | go|
|00001f10| 74 6f 20 6c 31 3b 0d 20 | 20 20 20 20 20 20 20 20 |to l1;. | |
|00001f20| 20 7d 0d 20 20 20 20 20 | 20 20 20 2f 2a 20 45 72 | }. | /* Er|
|00001f30| 72 6f 72 20 69 66 20 77 | 65 20 67 65 74 20 68 65 |ror if w|e get he|
|00001f40| 72 65 20 2a 2f 0d 20 20 | 20 20 20 20 20 20 69 66 |re */. | if|
|00001f50| 20 28 4f 70 74 69 6f 6e | 73 20 26 20 44 45 42 55 | (Option|s & DEBU|
|00001f60| 47 47 49 4e 47 29 20 0d | 20 20 20 20 20 20 20 20 |GGING) .| |
|00001f70| 20 20 7b 0d 20 20 20 20 | 20 20 20 20 20 20 70 72 | {. | pr|
|00001f80| 69 6e 74 66 28 22 46 61 | 69 6c 65 64 20 74 6f 20 |intf("Fa|iled to |
|00001f90| 66 61 63 74 6f 72 5c 6e | 22 29 3b 0d 20 20 20 20 |factor\n|");. |
|00001fa0| 20 20 20 20 20 20 66 66 | 6c 75 73 68 28 73 74 64 | ff|lush(std|
|00001fb0| 6f 75 74 29 3b 0d 20 20 | 20 20 20 20 20 20 20 20 |out);. | |
|00001fc0| 7d 0d 6c 31 3a 3b 0d 20 | 20 20 20 20 20 20 20 7d |}.l1:;. | }|
|00001fd0| 0d 20 20 20 20 20 20 7d | 0d 20 20 20 20 72 65 73 |. }|. res|
|00001fe0| 75 6c 74 3d 31 3b 0d 20 | 20 20 20 66 6f 72 20 28 |ult=1;. | for (|
|00001ff0| 69 3d 30 3b 69 3c 6a 3b | 69 2b 2b 29 0d 20 20 20 |i=0;i<j;|i++). |
|00002000| 20 20 20 72 65 73 75 6c | 74 20 2a 3d 20 73 74 61 | resul|t *= sta|
|00002010| 63 6b 31 5b 69 5d 3b 0d | 20 20 20 20 7d 0d 20 20 |ck1[i];.| }. |
|00002020| 72 65 74 75 72 6e 20 72 | 65 73 75 6c 74 3b 0d 20 |return r|esult;. |
|00002030| 20 7d 0d 0d 73 74 61 74 | 69 63 20 44 42 4c 0d 69 | }..stat|ic DBL.i|
|00002040| 6e 73 69 64 65 28 49 50 | 6f 69 6e 74 2c 20 4f 72 |nside(IP|oint, Or|
|00002050| 64 65 72 2c 20 43 6f 65 | 66 66 73 29 0d 56 45 43 |der, Coe|ffs).VEC|
|00002060| 54 4f 52 20 2a 49 50 6f | 69 6e 74 3b 0d 69 6e 74 |TOR *IPo|int;.int|
|00002070| 20 4f 72 64 65 72 3b 0d | 44 42 4c 20 2a 43 6f 65 | Order;.|DBL *Coe|
|00002080| 66 66 73 3b 0d 20 20 7b | 0d 20 20 44 42 4c 20 78 |ffs;. {|. DBL x|
|00002090| 5b 4d 41 58 5f 4f 52 44 | 45 52 2b 31 5d 2c 20 79 |[MAX_ORD|ER+1], y|
|000020a0| 5b 4d 41 58 5f 4f 52 44 | 45 52 2b 31 5d 3b 0d 20 |[MAX_ORD|ER+1];. |
|000020b0| 20 44 42 4c 20 7a 5b 4d | 41 58 5f 4f 52 44 45 52 | DBL z[M|AX_ORDER|
|000020c0| 2b 31 5d 2c 20 63 2c 20 | 52 65 73 75 6c 74 3b 0d |+1], c, |Result;.|
|000020d0| 20 20 69 6e 74 20 69 2c | 20 6a 2c 20 6b 2c 20 74 | int i,| j, k, t|
|000020e0| 65 72 6d 3b 0d 0d 20 20 | 78 5b 30 5d 20 3d 20 31 |erm;.. |x[0] = 1|
|000020f0| 2e 30 3b 20 20 20 20 20 | 20 20 79 5b 30 5d 20 3d |.0; | y[0] =|
|00002100| 20 31 2e 30 3b 20 20 20 | 20 20 20 20 7a 5b 30 5d | 1.0; | z[0]|
|00002110| 20 3d 20 31 2e 30 3b 0d | 20 20 78 5b 31 5d 20 3d | = 1.0;.| x[1] =|
|00002120| 20 49 50 6f 69 6e 74 2d | 3e 78 3b 20 79 5b 31 5d | IPoint-|>x; y[1]|
|00002130| 20 3d 20 49 50 6f 69 6e | 74 2d 3e 79 3b 20 7a 5b | = IPoin|t->y; z[|
|00002140| 31 5d 20 3d 20 49 50 6f | 69 6e 74 2d 3e 7a 3b 0d |1] = IPo|int->z;.|
|00002150| 20 20 66 6f 72 20 28 69 | 3d 32 3b 69 3c 3d 4f 72 | for (i|=2;i<=Or|
|00002160| 64 65 72 3b 69 2b 2b 29 | 20 0d 20 20 20 20 7b 0d |der;i++)| . {.|
|00002170| 20 20 20 20 78 5b 69 5d | 20 3d 20 78 5b 31 5d 20 | x[i]| = x[1] |
|00002180| 2a 20 78 5b 69 2d 31 5d | 3b 0d 20 20 20 20 79 5b |* x[i-1]|;. y[|
|00002190| 69 5d 20 3d 20 79 5b 31 | 5d 20 2a 20 79 5b 69 2d |i] = y[1|] * y[i-|
|000021a0| 31 5d 3b 0d 20 20 20 20 | 7a 5b 69 5d 20 3d 20 7a |1];. |z[i] = z|
|000021b0| 5b 31 5d 20 2a 20 7a 5b | 69 2d 31 5d 3b 0d 20 20 |[1] * z[|i-1];. |
|000021c0| 20 20 7d 0d 20 20 52 65 | 73 75 6c 74 20 3d 20 30 | }. Re|sult = 0|
|000021d0| 2e 30 3b 0d 20 20 74 65 | 72 6d 20 3d 20 30 3b 0d |.0;. te|rm = 0;.|
|000021e0| 20 20 66 6f 72 20 28 69 | 3d 4f 72 64 65 72 3b 69 | for (i|=Order;i|
|000021f0| 3e 3d 30 3b 69 2d 2d 29 | 0d 20 20 20 20 66 6f 72 |>=0;i--)|. for|
|00002200| 20 28 6a 3d 4f 72 64 65 | 72 2d 69 3b 6a 3e 3d 30 | (j=Orde|r-i;j>=0|
|00002210| 3b 6a 2d 2d 29 0d 20 20 | 20 20 66 6f 72 20 28 6b |;j--). | for (k|
|00002220| 3d 4f 72 64 65 72 2d 28 | 69 2b 6a 29 3b 6b 3e 3d |=Order-(|i+j);k>=|
|00002230| 30 3b 6b 2d 2d 29 20 0d | 20 20 20 20 7b 0d 20 20 |0;k--) .| {. |
|00002240| 20 20 69 66 20 28 28 63 | 20 3d 20 43 6f 65 66 66 | if ((c| = Coeff|
|00002250| 73 5b 74 65 72 6d 5d 29 | 20 21 3d 20 30 2e 30 29 |s[term])| != 0.0)|
|00002260| 0d 20 20 20 20 20 20 52 | 65 73 75 6c 74 20 2b 3d |. R|esult +=|
|00002270| 20 63 20 2a 20 78 5b 69 | 5d 20 2a 20 79 5b 6a 5d | c * x[i|] * y[j]|
|00002280| 20 2a 20 7a 5b 6b 5d 3b | 0d 20 20 20 20 74 65 72 | * z[k];|. ter|
|00002290| 6d 2b 2b 3b 0d 20 20 20 | 20 7d 0d 20 20 72 65 74 |m++;. | }. ret|
|000022a0| 75 72 6e 20 52 65 73 75 | 6c 74 3b 0d 20 20 7d 0d |urn Resu|lt;. }.|
|000022b0| 0d 2f 2a 20 49 6e 74 65 | 72 73 65 63 74 69 6f 6e |./* Inte|rsection|
|000022c0| 20 6f 66 20 61 20 72 61 | 79 20 61 6e 64 20 61 6e | of a ra|y and an|
|000022d0| 20 61 72 62 69 74 72 61 | 72 79 20 70 6f 6c 79 6e | arbitra|ry polyn|
|000022e0| 6f 6d 69 61 6c 20 66 75 | 6e 63 74 69 6f 6e 20 2a |omial fu|nction *|
|000022f0| 2f 0d 73 74 61 74 69 63 | 20 69 6e 74 0d 69 6e 74 |/.static| int.int|
|00002300| 65 72 73 65 63 74 28 72 | 61 79 2c 20 4f 72 64 65 |ersect(r|ay, Orde|
|00002310| 72 2c 20 43 6f 65 66 66 | 73 2c 20 53 74 75 72 6d |r, Coeff|s, Sturm|
|00002320| 5f 46 6c 61 67 2c 20 44 | 65 70 74 68 73 29 0d 52 |_Flag, D|epths).R|
|00002330| 41 59 20 2a 72 61 79 3b | 0d 69 6e 74 20 4f 72 64 |AY *ray;|.int Ord|
|00002340| 65 72 2c 20 53 74 75 72 | 6d 5f 46 6c 61 67 3b 0d |er, Stur|m_Flag;.|
|00002350| 44 42 4c 20 2a 43 6f 65 | 66 66 73 2c 20 2a 44 65 |DBL *Coe|ffs, *De|
|00002360| 70 74 68 73 3b 0d 20 20 | 7b 0d 20 20 44 42 4c 20 |pths;. |{. DBL |
|00002370| 65 71 6e 5b 4d 41 58 5f | 4f 52 44 45 52 2b 31 5d |eqn[MAX_|ORDER+1]|
|00002380| 3b 0d 20 20 44 42 4c 20 | 74 5b 33 5d 5b 4d 41 58 |;. DBL |t[3][MAX|
|00002390| 5f 4f 52 44 45 52 2b 31 | 5d 3b 0d 20 20 56 45 43 |_ORDER+1|];. VEC|
|000023a0| 54 4f 52 20 50 2c 20 44 | 3b 0d 20 20 44 42 4c 20 |TOR P, D|;. DBL |
|000023b0| 76 61 6c 3b 0d 20 20 69 | 6e 74 20 68 2c 20 69 2c |val;. i|nt h, i,|
|000023c0| 20 6a 2c 20 6b 2c 20 69 | 31 2c 20 6a 31 2c 20 6b | j, k, i|1, j1, k|
|000023d0| 31 2c 20 74 65 72 6d 3b | 0d 20 20 69 6e 74 20 6f |1, term;|. int o|
|000023e0| 66 66 73 65 74 3b 0d 0d | 20 20 2f 2a 20 46 69 72 |ffset;..| /* Fir|
|000023f0| 73 74 20 77 65 20 63 61 | 6c 63 75 6c 61 74 65 20 |st we ca|lculate |
|00002400| 74 68 65 20 76 61 6c 75 | 65 73 20 6f 66 20 74 68 |the valu|es of th|
|00002410| 65 20 69 6e 64 69 76 69 | 64 75 61 6c 20 70 6f 77 |e indivi|dual pow|
|00002420| 65 72 73 0d 20 20 20 20 | 20 20 6f 66 20 78 2c 20 |ers. | of x, |
|00002430| 79 2c 20 61 6e 64 20 7a | 20 61 73 20 74 68 65 79 |y, and z| as they|
|00002440| 20 61 72 65 20 72 65 70 | 72 65 73 65 6e 74 65 64 | are rep|resented|
|00002450| 20 62 79 20 74 68 65 20 | 72 61 79 20 2a 2f 0d 20 | by the |ray */. |
|00002460| 20 50 20 3d 20 72 61 79 | 2d 3e 49 6e 69 74 69 61 | P = ray|->Initia|
|00002470| 6c 3b 0d 20 20 44 20 3d | 20 72 61 79 2d 3e 44 69 |l;. D =| ray->Di|
|00002480| 72 65 63 74 69 6f 6e 3b | 0d 20 20 66 6f 72 20 28 |rection;|. for (|
|00002490| 69 3d 30 3b 69 3c 33 3b | 69 2b 2b 29 20 0d 20 20 |i=0;i<3;|i++) . |
|000024a0| 20 20 7b 0d 20 20 20 20 | 65 71 6e 5f 76 5b 69 5d | {. |eqn_v[i]|
|000024b0| 5b 30 5d 20 20 3d 20 31 | 2e 30 3b 0d 20 20 20 20 |[0] = 1|.0;. |
|000024c0| 65 71 6e 5f 76 74 5b 69 | 5d 5b 30 5d 20 3d 20 31 |eqn_vt[i|][0] = 1|
|000024d0| 2e 30 3b 0d 20 20 20 20 | 7d 0d 20 20 65 71 6e 5f |.0;. |}. eqn_|
|000024e0| 76 5b 30 5d 5b 31 5d 20 | 3d 20 50 2e 78 3b 0d 20 |v[0][1] |= P.x;. |
|000024f0| 20 65 71 6e 5f 76 5b 31 | 5d 5b 31 5d 20 3d 20 50 | eqn_v[1|][1] = P|
|00002500| 2e 79 3b 0d 20 20 65 71 | 6e 5f 76 5b 32 5d 5b 31 |.y;. eq|n_v[2][1|
|00002510| 5d 20 3d 20 50 2e 7a 3b | 0d 20 20 65 71 6e 5f 76 |] = P.z;|. eqn_v|
|00002520| 74 5b 30 5d 5b 31 5d 20 | 3d 20 44 2e 78 3b 0d 20 |t[0][1] |= D.x;. |
|00002530| 20 65 71 6e 5f 76 74 5b | 31 5d 5b 31 5d 20 3d 20 | eqn_vt[|1][1] = |
|00002540| 44 2e 79 3b 0d 20 20 65 | 71 6e 5f 76 74 5b 32 5d |D.y;. e|qn_vt[2]|
|00002550| 5b 31 5d 20 3d 20 44 2e | 7a 3b 0d 0d 20 20 66 6f |[1] = D.|z;.. fo|
|00002560| 72 20 28 69 3d 32 3b 69 | 3c 3d 4f 72 64 65 72 3b |r (i=2;i|<=Order;|
|00002570| 69 2b 2b 29 0d 20 20 20 | 20 66 6f 72 20 28 6a 3d |i++). | for (j=|
|00002580| 30 3b 6a 3c 33 3b 6a 2b | 2b 29 20 0d 20 20 20 20 |0;j<3;j+|+) . |
|00002590| 7b 0d 20 20 20 20 65 71 | 6e 5f 76 5b 6a 5d 5b 69 |{. eq|n_v[j][i|
|000025a0| 5d 20 20 3d 20 65 71 6e | 5f 76 5b 6a 5d 5b 31 5d |] = eqn|_v[j][1]|
|000025b0| 20 2a 20 65 71 6e 5f 76 | 5b 6a 5d 5b 69 2d 31 5d | * eqn_v|[j][i-1]|
|000025c0| 3b 0d 20 20 20 20 65 71 | 6e 5f 76 74 5b 6a 5d 5b |;. eq|n_vt[j][|
|000025d0| 69 5d 20 3d 20 65 71 6e | 5f 76 74 5b 6a 5d 5b 31 |i] = eqn|_vt[j][1|
|000025e0| 5d 20 2a 20 65 71 6e 5f | 76 74 5b 6a 5d 5b 69 2d |] * eqn_|vt[j][i-|
|000025f0| 31 5d 3b 0d 20 20 20 20 | 7d 0d 0d 20 20 66 6f 72 |1];. |}.. for|
|00002600| 20 28 69 3d 30 3b 69 3c | 3d 4f 72 64 65 72 3b 69 | (i=0;i<|=Order;i|
|00002610| 2b 2b 29 0d 20 20 20 20 | 65 71 6e 5b 69 5d 20 3d |++). |eqn[i] =|
|00002620| 20 30 2e 30 3b 0d 0d 20 | 20 2f 2a 20 4e 6f 77 20 | 0.0;.. | /* Now |
|00002630| 77 61 6c 6b 20 74 68 72 | 6f 75 67 68 20 74 68 65 |walk thr|ough the|
|00002640| 20 74 65 72 6d 73 20 6f | 66 20 74 68 65 20 70 6f | terms o|f the po|
|00002650| 6c 79 6e 6f 6d 69 61 6c | 2e 20 20 41 73 20 77 65 |lynomial|. As we|
|00002660| 20 67 6f 0d 20 20 20 20 | 20 20 77 65 20 73 75 62 | go. | we sub|
|00002670| 73 74 69 74 75 74 65 20 | 74 68 65 20 72 61 79 20 |stitute |the ray |
|00002680| 65 71 75 61 74 69 6f 6e | 20 66 6f 72 20 65 61 63 |equation| for eac|
|00002690| 68 20 6f 66 20 74 68 65 | 20 76 61 72 69 61 62 6c |h of the| variabl|
|000026a0| 65 73 2e 20 2a 2f 0d 20 | 20 74 65 72 6d 20 3d 20 |es. */. | term = |
|000026b0| 30 3b 0d 20 20 66 6f 72 | 20 28 69 3d 4f 72 64 65 |0;. for| (i=Orde|
|000026c0| 72 3b 69 3e 3d 30 3b 69 | 2d 2d 29 20 0d 20 20 20 |r;i>=0;i|--) . |
|000026d0| 20 7b 0d 20 20 20 20 66 | 6f 72 20 28 68 3d 30 3b | {. f|or (h=0;|
|000026e0| 68 3c 3d 69 3b 68 2b 2b | 29 0d 20 20 20 20 20 20 |h<=i;h++|). |
|000026f0| 74 5b 30 5d 5b 68 5d 20 | 3d 20 62 69 6e 6f 6d 69 |t[0][h] |= binomi|
|00002700| 61 6c 28 69 2c 20 68 29 | 20 2a 0d 20 20 20 20 20 |al(i, h)| *. |
|00002710| 20 65 71 6e 5f 76 74 5b | 30 5d 5b 69 2d 68 5d 20 | eqn_vt[|0][i-h] |
|00002720| 2a 0d 20 20 20 20 20 20 | 65 71 6e 5f 76 5b 30 5d |*. |eqn_v[0]|
|00002730| 5b 68 5d 3b 0d 20 20 20 | 20 66 6f 72 20 28 6a 3d |[h];. | for (j=|
|00002740| 4f 72 64 65 72 2d 69 3b | 6a 3e 3d 30 3b 6a 2d 2d |Order-i;|j>=0;j--|
|00002750| 29 20 0d 20 20 20 20 20 | 20 7b 0d 20 20 20 20 20 |) . | {. |
|00002760| 20 66 6f 72 20 28 68 3d | 30 3b 68 3c 3d 6a 3b 68 | for (h=|0;h<=j;h|
|00002770| 2b 2b 29 0d 20 20 20 20 | 20 20 20 20 74 5b 31 5d |++). | t[1]|
|00002780| 5b 68 5d 20 3d 20 62 69 | 6e 6f 6d 69 61 6c 28 6a |[h] = bi|nomial(j|
|00002790| 2c 20 68 29 20 2a 0d 20 | 20 20 20 20 20 20 20 65 |, h) *. | e|
|000027a0| 71 6e 5f 76 74 5b 31 5d | 5b 6a 2d 68 5d 20 2a 0d |qn_vt[1]|[j-h] *.|
|000027b0| 20 20 20 20 20 20 20 20 | 65 71 6e 5f 76 5b 31 5d | |eqn_v[1]|
|000027c0| 5b 68 5d 3b 0d 20 20 20 | 20 20 20 66 6f 72 20 28 |[h];. | for (|
|000027d0| 6b 3d 4f 72 64 65 72 2d | 28 69 2b 6a 29 3b 6b 3e |k=Order-|(i+j);k>|
|000027e0| 3d 30 3b 6b 2d 2d 29 20 | 0d 20 20 20 20 20 20 20 |=0;k--) |. |
|000027f0| 20 7b 0d 20 20 20 20 20 | 20 20 20 69 66 20 28 43 | {. | if (C|
|00002800| 6f 65 66 66 73 5b 74 65 | 72 6d 5d 20 21 3d 20 30 |oeffs[te|rm] != 0|
|00002810| 29 20 0d 20 20 20 20 20 | 20 20 20 20 20 7b 0d 20 |) . | {. |
|00002820| 20 20 20 20 20 20 20 20 | 20 66 6f 72 20 28 68 3d | | for (h=|
|00002830| 30 3b 68 3c 3d 6b 3b 68 | 2b 2b 29 0d 20 20 20 20 |0;h<=k;h|++). |
|00002840| 20 20 20 20 20 20 20 20 | 74 5b 32 5d 5b 68 5d 20 | |t[2][h] |
|00002850| 3d 20 62 69 6e 6f 6d 69 | 61 6c 28 6b 2c 20 68 29 |= binomi|al(k, h)|
|00002860| 20 2a 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 65 | *. | e|
|00002870| 71 6e 5f 76 74 5b 32 5d | 5b 6b 2d 68 5d 20 2a 0d |qn_vt[2]|[k-h] *.|
|00002880| 20 20 20 20 20 20 20 20 | 20 20 20 20 65 71 6e 5f | | eqn_|
|00002890| 76 5b 32 5d 5b 68 5d 3b | 0d 0d 20 20 20 20 20 20 |v[2][h];|.. |
|000028a0| 20 20 20 20 2f 2a 20 4d | 75 6c 74 69 70 6c 79 20 | /* M|ultiply |
|000028b0| 74 6f 67 65 74 68 65 72 | 20 74 68 65 20 74 68 72 |together| the thr|
|000028c0| 65 65 20 70 6f 6c 79 6e | 6f 6d 69 61 6c 73 20 2a |ee polyn|omials *|
|000028d0| 2f 0d 20 20 20 20 20 20 | 20 20 20 20 6f 66 66 73 |/. | offs|
|000028e0| 65 74 20 3d 20 4f 72 64 | 65 72 20 2d 20 28 69 20 |et = Ord|er - (i |
|000028f0| 2b 20 6a 20 2b 20 6b 29 | 3b 0d 20 20 20 20 20 20 |+ j + k)|;. |
|00002900| 20 20 20 20 66 6f 72 20 | 28 69 31 3d 30 3b 69 31 | for |(i1=0;i1|
|00002910| 3c 3d 69 3b 69 31 2b 2b | 29 0d 20 20 20 20 20 20 |<=i;i1++|). |
|00002920| 20 20 20 20 20 20 66 6f | 72 20 28 6a 31 3d 30 3b | fo|r (j1=0;|
|00002930| 6a 31 3c 3d 6a 3b 6a 31 | 2b 2b 29 0d 20 20 20 20 |j1<=j;j1|++). |
|00002940| 20 20 20 20 20 20 20 20 | 66 6f 72 20 28 6b 31 3d | |for (k1=|
|00002950| 30 3b 6b 31 3c 3d 6b 3b | 6b 31 2b 2b 29 20 0d 20 |0;k1<=k;|k1++) . |
|00002960| 20 20 20 20 20 20 20 20 | 20 20 20 7b 0d 20 20 20 | | {. |
|00002970| 20 20 20 20 20 20 20 20 | 20 68 20 3d 20 6f 66 66 | | h = off|
|00002980| 73 65 74 20 2b 20 69 31 | 20 2b 20 6a 31 20 2b 20 |set + i1| + j1 + |
|00002990| 6b 31 3b 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |k1;. | |
|000029a0| 76 61 6c 20 3d 20 43 6f | 65 66 66 73 5b 74 65 72 |val = Co|effs[ter|
|000029b0| 6d 5d 3b 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |m];. | |
|000029c0| 76 61 6c 20 2a 3d 20 74 | 5b 30 5d 5b 69 31 5d 3b |val *= t|[0][i1];|
|000029d0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 76 61 6c |. | val|
|000029e0| 20 2a 3d 20 74 5b 31 5d | 5b 6a 31 5d 3b 0d 20 20 | *= t[1]|[j1];. |
|000029f0| 20 20 20 20 20 20 20 20 | 20 20 76 61 6c 20 2a 3d | | val *=|
|00002a00| 20 74 5b 32 5d 5b 6b 31 | 5d 3b 0d 20 20 20 20 20 | t[2][k1|];. |
|00002a10| 20 20 20 20 20 20 20 65 | 71 6e 5b 68 5d 20 2b 3d | e|qn[h] +=|
|00002a20| 20 76 61 6c 3b 0d 20 20 | 20 20 20 20 20 20 20 20 | val;. | |
|00002a30| 20 20 7d 0d 20 20 20 20 | 20 20 20 20 20 20 7d 0d | }. | }.|
|00002a40| 20 20 20 20 20 20 20 20 | 74 65 72 6d 2b 2b 3b 0d | |term++;.|
|00002a50| 20 20 20 20 20 20 20 20 | 7d 0d 20 20 20 20 20 20 | |}. |
|00002a60| 7d 0d 20 20 20 20 7d 0d | 20 20 66 6f 72 20 28 69 |}. }.| for (i|
|00002a70| 3d 30 2c 6a 3d 4f 72 64 | 65 72 3b 69 3c 3d 4f 72 |=0,j=Ord|er;i<=Or|
|00002a80| 64 65 72 3b 69 2b 2b 29 | 0d 20 20 20 20 69 66 20 |der;i++)|. if |
|00002a90| 28 65 71 6e 5b 69 5d 20 | 21 3d 20 30 2e 30 29 0d |(eqn[i] |!= 0.0).|
|00002aa0| 20 20 20 20 20 20 62 72 | 65 61 6b 3b 0d 20 20 20 | br|eak;. |
|00002ab0| 20 65 6c 73 65 0d 20 20 | 20 20 20 20 6a 2d 2d 3b | else. | j--;|
|00002ac0| 0d 0d 20 20 69 66 20 28 | 6a 20 3e 20 34 20 7c 7c |.. if (|j > 4 |||
|00002ad0| 20 53 74 75 72 6d 5f 46 | 6c 61 67 29 0d 20 20 20 | Sturm_F|lag). |
|00002ae0| 20 72 65 74 75 72 6e 20 | 70 6f 6c 79 73 6f 6c 76 | return |polysolv|
|00002af0| 65 28 6a 2c 20 26 65 71 | 6e 5b 69 5d 2c 20 44 65 |e(j, &eq|n[i], De|
|00002b00| 70 74 68 73 29 3b 0d 20 | 20 65 6c 73 65 20 69 66 |pths);. | else if|
|00002b10| 20 28 6a 20 3d 3d 20 34 | 29 0d 20 20 20 20 72 65 | (j == 4|). re|
|00002b20| 74 75 72 6e 20 73 6f 6c | 76 65 5f 71 75 61 72 74 |turn sol|ve_quart|
|00002b30| 69 63 28 26 65 71 6e 5b | 69 5d 2c 20 44 65 70 74 |ic(&eqn[|i], Dept|
|00002b40| 68 73 29 3b 0d 20 20 65 | 6c 73 65 20 69 66 20 28 |hs);. e|lse if (|
|00002b50| 6a 3d 3d 33 29 0d 20 20 | 20 20 72 65 74 75 72 6e |j==3). | return|
|00002b60| 20 73 6f 6c 76 65 5f 63 | 75 62 69 63 28 26 65 71 | solve_c|ubic(&eq|
|00002b70| 6e 5b 69 5d 2c 20 44 65 | 70 74 68 73 29 3b 0d 20 |n[i], De|pths);. |
|00002b80| 20 65 6c 73 65 20 69 66 | 20 28 6a 3d 3d 32 29 0d | else if| (j==2).|
|00002b90| 20 20 20 20 72 65 74 75 | 72 6e 20 73 6f 6c 76 65 | retu|rn solve|
|00002ba0| 5f 71 75 61 64 72 61 74 | 69 63 28 26 65 71 6e 5b |_quadrat|ic(&eqn[|
|00002bb0| 69 5d 2c 20 44 65 70 74 | 68 73 29 3b 0d 20 20 65 |i], Dept|hs);. e|
|00002bc0| 6c 73 65 0d 20 20 20 20 | 72 65 74 75 72 6e 20 30 |lse. |return 0|
|00002bd0| 3b 0d 20 20 7d 0d 0d 2f | 2a 20 49 6e 74 65 72 73 |;. }../|* Inters|
|00002be0| 65 63 74 69 6f 6e 20 6f | 66 20 61 20 72 61 79 20 |ection o|f a ray |
|00002bf0| 61 6e 64 20 61 20 71 75 | 61 64 72 61 74 69 63 20 |and a qu|adratic |
|00002c00| 2a 2f 0d 73 74 61 74 69 | 63 20 69 6e 74 0d 69 6e |*/.stati|c int.in|
|00002c10| 74 65 72 73 65 63 74 5f | 6c 69 6e 65 61 72 28 72 |tersect_|linear(r|
|00002c20| 61 79 2c 20 43 6f 65 66 | 66 73 2c 20 44 65 70 74 |ay, Coef|fs, Dept|
|00002c30| 68 73 29 0d 52 41 59 20 | 2a 72 61 79 3b 0d 44 42 |hs).RAY |*ray;.DB|
|00002c40| 4c 20 2a 43 6f 65 66 66 | 73 2c 20 2a 44 65 70 74 |L *Coeff|s, *Dept|
|00002c50| 68 73 3b 0d 20 20 7b 0d | 20 20 44 42 4c 20 74 30 |hs;. {.| DBL t0|
|00002c60| 2c 20 74 31 2c 20 2a 61 | 20 3d 20 43 6f 65 66 66 |, t1, *a| = Coeff|
|00002c70| 73 3b 0d 0d 20 20 74 30 | 20 3d 20 61 5b 30 5d 20 |s;.. t0| = a[0] |
|00002c80| 2a 20 72 61 79 2d 3e 49 | 6e 69 74 69 61 6c 2e 78 |* ray->I|nitial.x|
|00002c90| 20 2b 20 61 5b 31 5d 20 | 2a 20 72 61 79 2d 3e 49 | + a[1] |* ray->I|
|00002ca0| 6e 69 74 69 61 6c 2e 79 | 20 2b 20 61 5b 32 5d 20 |nitial.y| + a[2] |
|00002cb0| 2a 20 72 61 79 2d 3e 49 | 6e 69 74 69 61 6c 2e 7a |* ray->I|nitial.z|
|00002cc0| 3b 0d 20 20 74 31 20 3d | 20 61 5b 30 5d 20 2a 20 |;. t1 =| a[0] * |
|00002cd0| 72 61 79 2d 3e 44 69 72 | 65 63 74 69 6f 6e 2e 78 |ray->Dir|ection.x|
|00002ce0| 20 2b 20 61 5b 31 5d 20 | 2a 20 72 61 79 2d 3e 44 | + a[1] |* ray->D|
|00002cf0| 69 72 65 63 74 69 6f 6e | 2e 79 20 2b 0d 20 20 61 |irection|.y +. a|
|00002d00| 5b 32 5d 20 2a 20 72 61 | 79 2d 3e 44 69 72 65 63 |[2] * ra|y->Direc|
|00002d10| 74 69 6f 6e 2e 7a 3b 0d | 20 20 69 66 20 28 66 61 |tion.z;.| if (fa|
|00002d20| 62 73 28 74 31 29 20 3c | 20 45 50 53 49 4c 4f 4e |bs(t1) <| EPSILON|
|00002d30| 29 0d 20 20 20 20 72 65 | 74 75 72 6e 20 30 3b 0d |). re|turn 0;.|
|00002d40| 20 20 44 65 70 74 68 73 | 5b 30 5d 20 3d 20 2d 28 | Depths|[0] = -(|
|00002d50| 61 5b 33 5d 20 2b 20 74 | 30 29 20 2f 20 74 31 3b |a[3] + t|0) / t1;|
|00002d60| 0d 20 20 72 65 74 75 72 | 6e 20 31 3b 0d 20 20 7d |. retur|n 1;. }|
|00002d70| 0d 0d 2f 2a 20 49 6e 74 | 65 72 73 65 63 74 69 6f |../* Int|ersectio|
|00002d80| 6e 20 6f 66 20 61 20 72 | 61 79 20 61 6e 64 20 61 |n of a r|ay and a|
|00002d90| 20 71 75 61 64 72 61 74 | 69 63 20 2a 2f 0d 73 74 | quadrat|ic */.st|
|00002da0| 61 74 69 63 20 69 6e 74 | 0d 69 6e 74 65 72 73 65 |atic int|.interse|
|00002db0| 63 74 5f 71 75 61 64 72 | 61 74 69 63 28 72 61 79 |ct_quadr|atic(ray|
|00002dc0| 2c 20 43 6f 65 66 66 73 | 2c 20 44 65 70 74 68 73 |, Coeffs|, Depths|
|00002dd0| 29 0d 52 41 59 20 2a 72 | 61 79 3b 0d 44 42 4c 20 |).RAY *r|ay;.DBL |
|00002de0| 2a 43 6f 65 66 66 73 2c | 20 2a 44 65 70 74 68 73 |*Coeffs,| *Depths|
|00002df0| 3b 0d 20 20 7b 0d 20 20 | 44 42 4c 20 78 2c 20 79 |;. {. |DBL x, y|
|00002e00| 2c 20 7a 2c 20 78 32 2c | 20 79 32 2c 20 7a 32 3b |, z, x2,| y2, z2;|
|00002e10| 0d 20 20 44 42 4c 20 78 | 78 2c 20 79 79 2c 20 7a |. DBL x|x, yy, z|
|00002e20| 7a 2c 20 78 78 32 2c 20 | 79 79 32 2c 20 7a 7a 32 |z, xx2, |yy2, zz2|
|00002e30| 3b 0d 20 20 44 42 4c 20 | 2a 61 2c 20 61 63 2c 20 |;. DBL |*a, ac, |
|00002e40| 62 63 2c 20 63 63 2c 20 | 64 2c 20 74 3b 0d 0d 20 |bc, cc, |d, t;.. |
|00002e50| 20 78 20 20 3d 20 72 61 | 79 2d 3e 49 6e 69 74 69 | x = ra|y->Initi|
|00002e60| 61 6c 2e 78 3b 0d 20 20 | 79 20 20 3d 20 72 61 79 |al.x;. |y = ray|
|00002e70| 2d 3e 49 6e 69 74 69 61 | 6c 2e 79 3b 0d 20 20 7a |->Initia|l.y;. z|
|00002e80| 20 20 3d 20 72 61 79 2d | 3e 49 6e 69 74 69 61 6c | = ray-|>Initial|
|00002e90| 2e 7a 3b 0d 20 20 78 78 | 20 3d 20 72 61 79 2d 3e |.z;. xx| = ray->|
|00002ea0| 44 69 72 65 63 74 69 6f | 6e 2e 78 3b 0d 20 20 79 |Directio|n.x;. y|
|00002eb0| 79 20 3d 20 72 61 79 2d | 3e 44 69 72 65 63 74 69 |y = ray-|>Directi|
|00002ec0| 6f 6e 2e 79 3b 0d 20 20 | 7a 7a 20 3d 20 72 61 79 |on.y;. |zz = ray|
|00002ed0| 2d 3e 44 69 72 65 63 74 | 69 6f 6e 2e 7a 3b 0d 20 |->Direct|ion.z;. |
|00002ee0| 20 78 32 20 3d 20 78 20 | 2a 20 78 3b 20 20 79 32 | x2 = x |* x; y2|
|00002ef0| 20 3d 20 79 20 2a 20 79 | 3b 20 20 7a 32 20 3d 20 | = y * y|; z2 = |
|00002f00| 7a 20 2a 20 7a 3b 0d 20 | 20 78 78 32 20 3d 20 78 |z * z;. | xx2 = x|
|00002f10| 78 20 2a 20 78 78 3b 20 | 20 79 79 32 20 3d 20 79 |x * xx; | yy2 = y|
|00002f20| 79 20 2a 20 79 79 3b 20 | 20 7a 7a 32 20 3d 20 7a |y * yy; | zz2 = z|
|00002f30| 7a 20 2a 20 7a 7a 3b 0d | 20 20 61 20 3d 20 43 6f |z * zz;.| a = Co|
|00002f40| 65 66 66 73 3b 0d 0d 20 | 20 2f 2a 0d 20 20 20 20 |effs;.. | /*. |
|00002f50| 20 20 44 65 74 65 72 6d | 69 6e 65 20 74 68 65 20 | Determ|ine the |
|00002f60| 63 6f 65 66 66 69 63 69 | 65 6e 74 73 20 6f 66 20 |coeffici|ents of |
|00002f70| 74 5e 6e 2c 20 77 68 65 | 72 65 20 74 68 65 20 6c |t^n, whe|re the l|
|00002f80| 69 6e 65 20 69 73 20 72 | 65 70 72 65 73 65 6e 74 |ine is r|epresent|
|00002f90| 65 64 0d 20 20 20 20 20 | 20 61 73 20 28 78 2c 79 |ed. | as (x,y|
|00002fa0| 2c 7a 29 20 2b 20 28 78 | 78 2c 79 79 2c 7a 7a 29 |,z) + (x|x,yy,zz)|
|00002fb0| 2a 74 2e 0d 20 20 20 2a | 2f 0d 20 20 61 63 20 3d |*t.. *|/. ac =|
|00002fc0| 20 28 61 5b 30 5d 2a 78 | 78 32 20 2b 20 61 5b 31 | (a[0]*x|x2 + a[1|
|00002fd0| 5d 2a 78 78 2a 79 79 20 | 2b 20 61 5b 32 5d 2a 78 |]*xx*yy |+ a[2]*x|
|00002fe0| 78 2a 7a 7a 20 2b 20 61 | 5b 34 5d 2a 79 79 32 20 |x*zz + a|[4]*yy2 |
|00002ff0| 2b 20 61 5b 35 5d 2a 79 | 79 2a 7a 7a 20 2b 0d 20 |+ a[5]*y|y*zz +. |
|00003000| 20 20 20 61 5b 37 5d 2a | 7a 7a 32 29 3b 0d 20 20 | a[7]*|zz2);. |
|00003010| 62 63 20 3d 20 28 32 2a | 61 5b 30 5d 2a 78 2a 78 |bc = (2*|a[0]*x*x|
|00003020| 78 20 2b 20 61 5b 31 5d | 2a 28 78 2a 79 79 20 2b |x + a[1]|*(x*yy +|
|00003030| 20 78 78 2a 79 29 20 2b | 20 61 5b 32 5d 2a 28 78 | xx*y) +| a[2]*(x|
|00003040| 2a 7a 7a 20 2b 20 78 78 | 2a 7a 29 20 2b 0d 20 20 |*zz + xx|*z) +. |
|00003050| 20 20 61 5b 33 5d 2a 78 | 78 20 2b 20 32 2a 61 5b | a[3]*x|x + 2*a[|
|00003060| 34 5d 2a 79 2a 79 79 20 | 2b 20 61 5b 35 5d 2a 28 |4]*y*yy |+ a[5]*(|
|00003070| 79 2a 7a 7a 20 2b 20 79 | 79 2a 7a 29 20 2b 20 61 |y*zz + y|y*z) + a|
|00003080| 5b 36 5d 2a 79 79 20 2b | 0d 20 20 20 20 32 2a 61 |[6]*yy +|. 2*a|
|00003090| 5b 37 5d 2a 7a 2a 7a 7a | 20 2b 20 61 5b 38 5d 2a |[7]*z*zz| + a[8]*|
|000030a0| 7a 7a 29 3b 0d 20 20 63 | 63 20 3d 20 61 5b 30 5d |zz);. c|c = a[0]|
|000030b0| 2a 78 32 20 2b 20 61 5b | 31 5d 2a 78 2a 79 20 2b |*x2 + a[|1]*x*y +|
|000030c0| 20 61 5b 32 5d 2a 78 2a | 7a 20 2b 20 61 5b 33 5d | a[2]*x*|z + a[3]|
|000030d0| 2a 78 20 2b 20 61 5b 34 | 5d 2a 79 32 20 2b 0d 20 |*x + a[4|]*y2 +. |
|000030e0| 20 61 5b 35 5d 2a 79 2a | 7a 20 2b 20 61 5b 36 5d | a[5]*y*|z + a[6]|
|000030f0| 2a 79 20 2b 20 61 5b 37 | 5d 2a 7a 32 20 2b 20 61 |*y + a[7|]*z2 + a|
|00003100| 5b 38 5d 2a 7a 20 2b 20 | 61 5b 39 5d 3b 0d 0d 20 |[8]*z + |a[9];.. |
|00003110| 20 69 66 20 28 66 61 62 | 73 28 61 63 29 20 3c 20 | if (fab|s(ac) < |
|00003120| 43 4f 45 46 46 5f 4c 49 | 4d 49 54 29 20 0d 20 20 |COEFF_LI|MIT) . |
|00003130| 20 20 7b 0d 20 20 20 20 | 69 66 20 28 66 61 62 73 | {. |if (fabs|
|00003140| 28 62 63 29 20 3c 20 43 | 4f 45 46 46 5f 4c 49 4d |(bc) < C|OEFF_LIM|
|00003150| 49 54 29 0d 20 20 20 20 | 20 20 72 65 74 75 72 6e |IT). | return|
|00003160| 20 30 3b 0d 20 20 20 20 | 44 65 70 74 68 73 5b 30 | 0;. |Depths[0|
|00003170| 5d 20 3d 20 2d 63 63 20 | 2f 20 62 63 3b 0d 20 20 |] = -cc |/ bc;. |
|00003180| 20 20 72 65 74 75 72 6e | 20 31 3b 0d 20 20 20 20 | return| 1;. |
|00003190| 7d 0d 0d 20 20 2f 2a 20 | 53 6f 6c 76 65 20 74 68 |}.. /* |Solve th|
|000031a0| 65 20 71 75 61 64 72 61 | 74 69 63 20 66 6f 72 6d |e quadra|tic form|
|000031b0| 75 6c 61 20 26 20 72 65 | 74 75 72 6e 20 72 65 73 |ula & re|turn res|
|000031c0| 75 6c 74 73 20 74 68 61 | 74 20 61 72 65 0d 20 20 |ults tha|t are. |
|000031d0| 20 20 20 20 77 69 74 68 | 69 6e 20 74 68 65 20 63 | with|in the c|
|000031e0| 6f 72 72 65 63 74 20 69 | 6e 74 65 72 76 61 6c 2e |orrect i|nterval.|
|000031f0| 20 2a 2f 0d 20 20 64 20 | 3d 20 62 63 20 2a 20 62 | */. d |= bc * b|
|00003200| 63 20 2d 20 34 2e 30 20 | 2a 20 61 63 20 2a 20 63 |c - 4.0 |* ac * c|
|00003210| 63 3b 0d 20 20 69 66 20 | 28 64 20 3c 20 30 2e 30 |c;. if |(d < 0.0|
|00003220| 29 20 72 65 74 75 72 6e | 20 30 3b 0d 20 20 64 20 |) return| 0;. d |
|00003230| 3d 20 73 71 72 74 28 64 | 29 3b 0d 20 20 62 63 20 |= sqrt(d|);. bc |
|00003240| 3d 20 2d 62 63 3b 0d 20 | 20 74 20 3d 20 32 2e 30 |= -bc;. | t = 2.0|
|00003250| 20 2a 20 61 63 3b 0d 20 | 20 44 65 70 74 68 73 5b | * ac;. | Depths[|
|00003260| 30 5d 20 3d 20 28 62 63 | 20 2b 20 64 29 20 2f 20 |0] = (bc| + d) / |
|00003270| 74 3b 0d 20 20 44 65 70 | 74 68 73 5b 31 5d 20 3d |t;. Dep|ths[1] =|
|00003280| 20 28 62 63 20 2d 20 64 | 29 20 2f 20 74 3b 0d 20 | (bc - d|) / t;. |
|00003290| 20 72 65 74 75 72 6e 20 | 32 3b 0d 20 20 7d 0d 0d | return |2;. }..|
|000032a0| 2f 2a 20 4e 6f 72 6d 61 | 6c 20 74 6f 20 61 20 70 |/* Norma|l to a p|
|000032b0| 6f 6c 79 6e 6f 6d 69 61 | 6c 20 28 75 73 65 64 20 |olynomia|l (used |
|000032c0| 66 6f 72 20 70 6f 6c 79 | 6e 6f 6d 69 61 6c 73 20 |for poly|nomials |
|000032d0| 77 69 74 68 20 6f 72 64 | 65 72 20 3e 20 34 29 20 |with ord|er > 4) |
|000032e0| 2a 2f 0d 73 74 61 74 69 | 63 20 76 6f 69 64 20 6e |*/.stati|c void n|
|000032f0| 6f 72 6d 61 6c 30 28 52 | 65 73 75 6c 74 2c 20 4f |ormal0(R|esult, O|
|00003300| 72 64 65 72 2c 20 43 6f | 65 66 66 73 2c 20 49 50 |rder, Co|effs, IP|
|00003310| 6f 69 6e 74 29 0d 56 45 | 43 54 4f 52 20 2a 52 65 |oint).VE|CTOR *Re|
|00003320| 73 75 6c 74 3b 0d 69 6e | 74 20 4f 72 64 65 72 3b |sult;.in|t Order;|
|00003330| 0d 44 42 4c 20 2a 43 6f | 65 66 66 73 3b 0d 56 45 |.DBL *Co|effs;.VE|
|00003340| 43 54 4f 52 20 2a 49 50 | 6f 69 6e 74 3b 0d 20 20 |CTOR *IP|oint;. |
|00003350| 7b 0d 20 20 69 6e 74 20 | 69 2c 20 6a 2c 20 6b 2c |{. int |i, j, k,|
|00003360| 20 74 65 72 6d 3b 0d 20 | 20 44 42 4c 20 76 61 6c | term;. | DBL val|
|00003370| 2c 20 2a 61 2c 20 78 5b | 4d 41 58 5f 4f 52 44 45 |, *a, x[|MAX_ORDE|
|00003380| 52 2b 31 5d 2c 20 79 5b | 4d 41 58 5f 4f 52 44 45 |R+1], y[|MAX_ORDE|
|00003390| 52 2b 31 5d 2c 20 7a 5b | 4d 41 58 5f 4f 52 44 45 |R+1], z[|MAX_ORDE|
|000033a0| 52 2b 31 5d 3b 0d 0d 20 | 20 78 5b 30 5d 20 3d 20 |R+1];.. | x[0] = |
|000033b0| 31 2e 30 3b 20 79 5b 30 | 5d 20 3d 20 31 2e 30 3b |1.0; y[0|] = 1.0;|
|000033c0| 20 7a 5b 30 5d 20 3d 20 | 31 2e 30 3b 0d 20 20 78 | z[0] = |1.0;. x|
|000033d0| 5b 31 5d 20 3d 20 49 50 | 6f 69 6e 74 2d 3e 78 3b |[1] = IP|oint->x;|
|000033e0| 0d 20 20 79 5b 31 5d 20 | 3d 20 49 50 6f 69 6e 74 |. y[1] |= IPoint|
|000033f0| 2d 3e 79 3b 0d 20 20 7a | 5b 31 5d 20 3d 20 49 50 |->y;. z|[1] = IP|
|00003400| 6f 69 6e 74 2d 3e 7a 3b | 0d 20 20 66 6f 72 20 28 |oint->z;|. for (|
|00003410| 69 3d 32 3b 69 3c 3d 4f | 72 64 65 72 3b 69 2b 2b |i=2;i<=O|rder;i++|
|00003420| 29 20 0d 20 20 20 20 7b | 0d 20 20 20 20 78 5b 69 |) . {|. x[i|
|00003430| 5d 20 3d 20 49 50 6f 69 | 6e 74 2d 3e 78 20 2a 20 |] = IPoi|nt->x * |
|00003440| 78 5b 69 2d 31 5d 3b 0d | 20 20 20 20 79 5b 69 5d |x[i-1];.| y[i]|
|00003450| 20 3d 20 49 50 6f 69 6e | 74 2d 3e 79 20 2a 20 79 | = IPoin|t->y * y|
|00003460| 5b 69 2d 31 5d 3b 0d 20 | 20 20 20 7a 5b 69 5d 20 |[i-1];. | z[i] |
|00003470| 3d 20 49 50 6f 69 6e 74 | 2d 3e 7a 20 2a 20 7a 5b |= IPoint|->z * z[|
|00003480| 69 2d 31 5d 3b 0d 20 20 | 20 20 7d 0d 20 20 61 20 |i-1];. | }. a |
|00003490| 3d 20 43 6f 65 66 66 73 | 3b 0d 20 20 74 65 72 6d |= Coeffs|;. term|
|000034a0| 20 3d 20 30 3b 0d 20 20 | 4d 61 6b 65 5f 56 65 63 | = 0;. |Make_Vec|
|000034b0| 74 6f 72 28 52 65 73 75 | 6c 74 2c 20 30 2c 20 30 |tor(Resu|lt, 0, 0|
|000034c0| 2c 20 30 29 3b 0d 20 20 | 66 6f 72 20 28 69 3d 4f |, 0);. |for (i=O|
|000034d0| 72 64 65 72 3b 69 3e 3d | 30 3b 69 2d 2d 29 0d 20 |rder;i>=|0;i--). |
|000034e0| 20 20 20 66 6f 72 20 28 | 6a 3d 4f 72 64 65 72 2d | for (|j=Order-|
|000034f0| 69 3b 6a 3e 3d 30 3b 6a | 2d 2d 29 0d 20 20 20 20 |i;j>=0;j|--). |
|00003500| 66 6f 72 20 28 6b 3d 4f | 72 64 65 72 2d 28 69 2b |for (k=O|rder-(i+|
|00003510| 6a 29 3b 6b 3e 3d 30 3b | 6b 2d 2d 29 20 0d 20 20 |j);k>=0;|k--) . |
|00003520| 20 20 7b 0d 20 20 20 20 | 69 66 20 28 69 20 3e 3d | {. |if (i >=|
|00003530| 20 31 29 20 0d 20 20 20 | 20 20 20 7b 0d 20 20 20 | 1) . | {. |
|00003540| 20 20 20 76 61 6c 20 3d | 20 78 5b 69 2d 31 5d 20 | val =| x[i-1] |
|00003550| 2a 20 79 5b 6a 5d 20 2a | 20 7a 5b 6b 5d 3b 0d 20 |* y[j] *| z[k];. |
|00003560| 20 20 20 20 20 52 65 73 | 75 6c 74 2d 3e 78 20 2b | Res|ult->x +|
|00003570| 3d 20 69 20 2a 20 61 5b | 74 65 72 6d 5d 20 2a 20 |= i * a[|term] * |
|00003580| 76 61 6c 3b 0d 20 20 20 | 20 20 20 7d 0d 20 20 20 |val;. | }. |
|00003590| 20 69 66 20 28 6a 20 3e | 3d 20 31 29 20 0d 20 20 | if (j >|= 1) . |
|000035a0| 20 20 20 20 7b 0d 20 20 | 20 20 20 20 76 61 6c 20 | {. | val |
|000035b0| 3d 20 78 5b 69 5d 20 2a | 20 79 5b 6a 2d 31 5d 20 |= x[i] *| y[j-1] |
|000035c0| 2a 20 7a 5b 6b 5d 3b 0d | 20 20 20 20 20 20 52 65 |* z[k];.| Re|
|000035d0| 73 75 6c 74 2d 3e 79 20 | 2b 3d 20 6a 20 2a 20 61 |sult->y |+= j * a|
|000035e0| 5b 74 65 72 6d 5d 20 2a | 20 76 61 6c 3b 0d 20 20 |[term] *| val;. |
|000035f0| 20 20 20 20 7d 0d 20 20 | 20 20 69 66 20 28 6b 20 | }. | if (k |
|00003600| 3e 3d 20 31 29 20 0d 20 | 20 20 20 20 20 7b 0d 20 |>= 1) . | {. |
|00003610| 20 20 20 20 20 76 61 6c | 20 3d 20 78 5b 69 5d 20 | val| = x[i] |
|00003620| 2a 20 79 5b 6a 5d 20 2a | 20 7a 5b 6b 2d 31 5d 3b |* y[j] *| z[k-1];|
|00003630| 0d 20 20 20 20 20 20 52 | 65 73 75 6c 74 2d 3e 7a |. R|esult->z|
|00003640| 20 2b 3d 20 6b 20 2a 20 | 61 5b 74 65 72 6d 5d 20 | += k * |a[term] |
|00003650| 2a 20 76 61 6c 3b 0d 20 | 20 20 20 20 20 7d 0d 20 |* val;. | }. |
|00003660| 20 20 20 74 65 72 6d 2b | 2b 3b 0d 20 20 20 20 7d | term+|+;. }|
|00003670| 0d 20 20 7d 0d 0d 2f 2a | 20 4e 6f 72 6d 61 6c 20 |. }../*| Normal |
|00003680| 74 6f 20 61 20 70 6f 6c | 79 6e 6f 6d 69 61 6c 20 |to a pol|ynomial |
|00003690| 28 66 6f 72 20 70 6f 6c | 79 6e 6f 6d 69 61 6c 73 |(for pol|ynomials|
|000036a0| 20 6f 66 20 6f 72 64 65 | 72 20 3c 3d 20 34 29 20 | of orde|r <= 4) |
|000036b0| 2a 2f 0d 73 74 61 74 69 | 63 20 76 6f 69 64 0d 6e |*/.stati|c void.n|
|000036c0| 6f 72 6d 61 6c 31 28 52 | 65 73 75 6c 74 2c 20 4f |ormal1(R|esult, O|
|000036d0| 72 64 65 72 2c 20 43 6f | 65 66 66 73 2c 20 49 50 |rder, Co|effs, IP|
|000036e0| 6f 69 6e 74 29 0d 56 45 | 43 54 4f 52 20 2a 52 65 |oint).VE|CTOR *Re|
|000036f0| 73 75 6c 74 3b 0d 69 6e | 74 20 4f 72 64 65 72 3b |sult;.in|t Order;|
|00003700| 0d 44 42 4c 20 2a 43 6f | 65 66 66 73 3b 0d 56 45 |.DBL *Co|effs;.VE|
|00003710| 43 54 4f 52 20 2a 49 50 | 6f 69 6e 74 3b 0d 20 20 |CTOR *IP|oint;. |
|00003720| 7b 0d 20 20 44 42 4c 20 | 2a 61 2c 20 78 2c 20 79 |{. DBL |*a, x, y|
|00003730| 2c 20 7a 2c 20 78 32 2c | 20 79 32 2c 20 7a 32 2c |, z, x2,| y2, z2,|
|00003740| 20 78 33 2c 20 79 33 2c | 20 7a 33 3b 0d 0d 20 20 | x3, y3,| z3;.. |
|00003750| 61 20 3d 20 43 6f 65 66 | 66 73 3b 0d 20 20 78 20 |a = Coef|fs;. x |
|00003760| 3d 20 49 50 6f 69 6e 74 | 2d 3e 78 3b 0d 20 20 79 |= IPoint|->x;. y|
|00003770| 20 3d 20 49 50 6f 69 6e | 74 2d 3e 79 3b 0d 20 20 | = IPoin|t->y;. |
|00003780| 7a 20 3d 20 49 50 6f 69 | 6e 74 2d 3e 7a 3b 0d 0d |z = IPoi|nt->z;..|
|00003790| 20 20 69 66 20 28 4f 72 | 64 65 72 20 3d 3d 20 31 | if (Or|der == 1|
|000037a0| 29 0d 20 20 20 20 2f 2a | 20 4c 69 6e 65 61 72 20 |). /*| Linear |
|000037b0| 70 61 72 74 69 61 6c 20 | 64 65 72 69 76 61 74 69 |partial |derivati|
|000037c0| 76 65 73 20 2a 2f 0d 20 | 20 20 20 4d 61 6b 65 5f |ves */. | Make_|
|000037d0| 56 65 63 74 6f 72 28 52 | 65 73 75 6c 74 2c 20 61 |Vector(R|esult, a|
|000037e0| 5b 30 5d 2c 20 61 5b 31 | 5d 2c 20 61 5b 32 5d 29 |[0], a[1|], a[2])|
|000037f0| 0d 65 6c 73 65 20 69 66 | 20 28 4f 72 64 65 72 20 |.else if| (Order |
|00003800| 3d 3d 20 32 29 20 0d 20 | 20 7b 0d 20 20 2f 2a 20 |== 2) . | {. /* |
|00003810| 51 75 61 64 72 61 74 69 | 63 20 70 61 72 74 69 61 |Quadrati|c partia|
|00003820| 6c 20 64 65 72 69 76 61 | 74 69 76 65 73 20 2a 2f |l deriva|tives */|
|00003830| 0d 20 20 52 65 73 75 6c | 74 2d 3e 78 20 3d 20 32 |. Resul|t->x = 2|
|00003840| 2a 61 5b 30 5d 2a 78 2b | 61 5b 31 5d 2a 79 2b 61 |*a[0]*x+|a[1]*y+a|
|00003850| 5b 32 5d 2a 7a 2b 61 5b | 33 5d 3b 0d 20 20 52 65 |[2]*z+a[|3];. Re|
|00003860| 73 75 6c 74 2d 3e 79 20 | 3d 20 61 5b 31 5d 2a 78 |sult->y |= a[1]*x|
|00003870| 2b 32 2a 61 5b 34 5d 2a | 79 2b 61 5b 35 5d 2a 7a |+2*a[4]*|y+a[5]*z|
|00003880| 2b 61 5b 36 5d 3b 0d 20 | 20 52 65 73 75 6c 74 2d |+a[6];. | Result-|
|00003890| 3e 7a 20 3d 20 61 5b 32 | 5d 2a 78 2b 61 5b 35 5d |>z = a[2|]*x+a[5]|
|000038a0| 2a 79 2b 32 2a 61 5b 37 | 5d 2a 7a 2b 61 5b 38 5d |*y+2*a[7|]*z+a[8]|
|000038b0| 3b 0d 20 20 7d 0d 65 6c | 73 65 20 69 66 20 28 4f |;. }.el|se if (O|
|000038c0| 72 64 65 72 20 3d 3d 20 | 33 29 20 0d 20 20 7b 0d |rder == |3) . {.|
|000038d0| 20 20 78 32 20 3d 20 78 | 20 2a 20 78 3b 20 20 79 | x2 = x| * x; y|
|000038e0| 32 20 3d 20 79 20 2a 20 | 79 3b 20 20 7a 32 20 3d |2 = y * |y; z2 =|
|000038f0| 20 7a 20 2a 20 7a 3b 0d | 20 20 2f 2a 20 43 75 62 | z * z;.| /* Cub|
|00003900| 69 63 20 70 61 72 74 69 | 61 6c 20 64 65 72 69 76 |ic parti|al deriv|
|00003910| 61 74 69 76 65 73 20 2a | 2f 0d 20 20 52 65 73 75 |atives *|/. Resu|
|00003920| 6c 74 2d 3e 78 20 3d 20 | 33 2a 61 5b 30 5d 2a 78 |lt->x = |3*a[0]*x|
|00003930| 32 20 2b 20 32 2a 78 2a | 28 61 5b 31 5d 2a 79 20 |2 + 2*x*|(a[1]*y |
|00003940| 2b 20 61 5b 32 5d 2a 7a | 20 2b 20 61 5b 33 5d 29 |+ a[2]*z| + a[3])|
|00003950| 20 2b 20 61 5b 34 5d 2a | 79 32 20 2b 0d 20 20 79 | + a[4]*|y2 +. y|
|00003960| 2a 28 61 5b 35 5d 2a 7a | 20 2b 20 61 5b 36 5d 29 |*(a[5]*z| + a[6])|
|00003970| 20 2b 20 61 5b 37 5d 2a | 7a 32 20 2b 20 61 5b 38 | + a[7]*|z2 + a[8|
|00003980| 5d 2a 7a 20 2b 20 61 5b | 39 5d 3b 0d 20 20 52 65 |]*z + a[|9];. Re|
|00003990| 73 75 6c 74 2d 3e 79 20 | 3d 20 61 5b 31 5d 2a 78 |sult->y |= a[1]*x|
|000039a0| 32 20 2b 20 78 2a 28 32 | 2a 61 5b 34 5d 2a 79 20 |2 + x*(2|*a[4]*y |
|000039b0| 2b 20 61 5b 35 5d 2a 7a | 20 2b 20 61 5b 36 5d 29 |+ a[5]*z| + a[6])|
|000039c0| 20 2b 20 33 2a 61 5b 31 | 30 5d 2a 79 32 20 2b 0d | + 3*a[1|0]*y2 +.|
|000039d0| 20 20 32 2a 79 2a 28 61 | 5b 31 31 5d 2a 7a 20 2b | 2*y*(a|[11]*z +|
|000039e0| 20 61 5b 31 32 5d 29 20 | 2b 20 61 5b 31 33 5d 2a | a[12]) |+ a[13]*|
|000039f0| 7a 32 20 2b 20 61 5b 31 | 34 5d 2a 7a 20 2b 20 61 |z2 + a[1|4]*z + a|
|00003a00| 5b 31 35 5d 3b 0d 20 20 | 52 65 73 75 6c 74 2d 3e |[15];. |Result->|
|00003a10| 7a 20 3d 20 61 5b 32 5d | 2a 78 32 20 2b 20 78 2a |z = a[2]|*x2 + x*|
|00003a20| 28 61 5b 35 5d 2a 79 20 | 2b 20 32 2a 61 5b 37 5d |(a[5]*y |+ 2*a[7]|
|00003a30| 2a 7a 20 2b 20 61 5b 38 | 5d 29 20 2b 20 61 5b 31 |*z + a[8|]) + a[1|
|00003a40| 31 5d 2a 79 32 20 2b 0d | 20 20 79 2a 28 32 2a 61 |1]*y2 +.| y*(2*a|
|00003a50| 5b 31 33 5d 2a 7a 20 2b | 20 61 5b 31 34 5d 29 20 |[13]*z +| a[14]) |
|00003a60| 2b 20 33 2a 61 5b 31 36 | 5d 2a 7a 32 20 2b 20 32 |+ 3*a[16|]*z2 + 2|
|00003a70| 2a 61 5b 31 37 5d 2a 7a | 20 2b 20 61 5b 31 38 5d |*a[17]*z| + a[18]|
|00003a80| 3b 0d 20 20 7d 0d 65 6c | 73 65 20 0d 20 20 7b 0d |;. }.el|se . {.|
|00003a90| 20 20 2f 2a 20 51 75 61 | 72 74 69 63 20 70 61 72 | /* Qua|rtic par|
|00003aa0| 74 69 61 6c 20 64 65 72 | 69 76 61 74 69 76 65 73 |tial der|ivatives|
|00003ab0| 20 2a 2f 0d 20 20 20 20 | 78 32 20 3d 20 78 20 2a | */. |x2 = x *|
|00003ac0| 20 78 3b 20 20 79 32 20 | 3d 20 79 20 2a 20 79 3b | x; y2 |= y * y;|
|00003ad0| 20 20 7a 32 20 3d 20 7a | 20 2a 20 7a 3b 0d 20 20 | z2 = z| * z;. |
|00003ae0| 78 33 20 3d 20 78 20 2a | 20 78 32 3b 20 79 33 20 |x3 = x *| x2; y3 |
|00003af0| 3d 20 79 20 2a 20 79 32 | 3b 20 7a 33 20 3d 20 7a |= y * y2|; z3 = z|
|00003b00| 20 2a 20 7a 32 3b 0d 20 | 20 52 65 73 75 6c 74 2d | * z2;. | Result-|
|00003b10| 3e 78 20 3d 20 34 2a 61 | 5b 20 30 5d 2a 78 33 2b |>x = 4*a|[ 0]*x3+|
|00003b20| 33 2a 78 32 2a 28 61 5b | 20 31 5d 2a 79 2b 61 5b |3*x2*(a[| 1]*y+a[|
|00003b30| 20 32 5d 2a 7a 2b 61 5b | 20 33 5d 29 2b 0d 20 20 | 2]*z+a[| 3])+. |
|00003b40| 32 2a 78 2a 28 61 5b 20 | 34 5d 2a 79 32 2b 79 2a |2*x*(a[ |4]*y2+y*|
|00003b50| 28 61 5b 20 35 5d 2a 7a | 2b 61 5b 20 36 5d 29 2b |(a[ 5]*z|+a[ 6])+|
|00003b60| 61 5b 20 37 5d 2a 7a 32 | 2b 61 5b 20 38 5d 2a 7a |a[ 7]*z2|+a[ 8]*z|
|00003b70| 2b 61 5b 20 39 5d 29 2b | 0d 20 20 61 5b 31 30 5d |+a[ 9])+|. a[10]|
|00003b80| 2a 79 33 2b 79 32 2a 28 | 61 5b 31 31 5d 2a 7a 2b |*y3+y2*(|a[11]*z+|
|00003b90| 61 5b 31 32 5d 29 2b 79 | 2a 28 61 5b 31 33 5d 2a |a[12])+y|*(a[13]*|
|00003ba0| 7a 32 2b 61 5b 31 34 5d | 2a 7a 2b 61 5b 31 35 5d |z2+a[14]|*z+a[15]|
|00003bb0| 29 2b 0d 20 20 61 5b 31 | 36 5d 2a 7a 33 2b 61 5b |)+. a[1|6]*z3+a[|
|00003bc0| 31 37 5d 2a 7a 32 2b 61 | 5b 31 38 5d 2a 7a 2b 61 |17]*z2+a|[18]*z+a|
|00003bd0| 5b 31 39 5d 3b 0d 20 20 | 52 65 73 75 6c 74 2d 3e |[19];. |Result->|
|00003be0| 79 20 3d 20 61 5b 20 31 | 5d 2a 78 33 2b 78 32 2a |y = a[ 1|]*x3+x2*|
|00003bf0| 28 32 2a 61 5b 20 34 5d | 2a 79 2b 61 5b 20 35 5d |(2*a[ 4]|*y+a[ 5]|
|00003c00| 2a 7a 2b 61 5b 20 36 5d | 29 2b 0d 20 20 78 2a 28 |*z+a[ 6]|)+. x*(|
|00003c10| 33 2a 61 5b 31 30 5d 2a | 79 32 2b 32 2a 79 2a 28 |3*a[10]*|y2+2*y*(|
|00003c20| 61 5b 31 31 5d 2a 7a 2b | 61 5b 31 32 5d 29 2b 61 |a[11]*z+|a[12])+a|
|00003c30| 5b 31 33 5d 2a 7a 32 2b | 61 5b 31 34 5d 2a 7a 2b |[13]*z2+|a[14]*z+|
|00003c40| 61 5b 31 35 5d 29 2b 0d | 20 20 34 2a 61 5b 32 30 |a[15])+.| 4*a[20|
|00003c50| 5d 2a 79 33 2b 33 2a 79 | 32 2a 28 61 5b 32 31 5d |]*y3+3*y|2*(a[21]|
|00003c60| 2a 7a 2b 61 5b 32 32 5d | 29 2b 32 2a 79 2a 28 61 |*z+a[22]|)+2*y*(a|
|00003c70| 5b 32 33 5d 2a 7a 32 2b | 61 5b 32 34 5d 2a 7a 2b |[23]*z2+|a[24]*z+|
|00003c80| 61 5b 32 35 5d 29 2b 0d | 20 20 61 5b 32 36 5d 2a |a[25])+.| a[26]*|
|00003c90| 7a 33 2b 61 5b 32 37 5d | 2a 7a 32 2b 61 5b 32 38 |z3+a[27]|*z2+a[28|
|00003ca0| 5d 2a 7a 2b 61 5b 32 39 | 5d 3b 0d 20 20 52 65 73 |]*z+a[29|];. Res|
|00003cb0| 75 6c 74 2d 3e 7a 20 3d | 20 61 5b 20 32 5d 2a 78 |ult->z =| a[ 2]*x|
|00003cc0| 33 2b 78 32 2a 28 61 5b | 20 35 5d 2a 79 2b 32 2a |3+x2*(a[| 5]*y+2*|
|00003cd0| 61 5b 20 37 5d 2a 7a 2b | 61 5b 20 38 5d 29 2b 0d |a[ 7]*z+|a[ 8])+.|
|00003ce0| 20 20 78 2a 28 61 5b 31 | 31 5d 2a 79 32 2b 79 2a | x*(a[1|1]*y2+y*|
|00003cf0| 28 32 2a 61 5b 31 33 5d | 2a 7a 2b 61 5b 31 34 5d |(2*a[13]|*z+a[14]|
|00003d00| 29 2b 33 2a 61 5b 31 36 | 5d 2a 7a 32 2b 32 2a 61 |)+3*a[16|]*z2+2*a|
|00003d10| 5b 31 37 5d 2a 7a 2b 61 | 5b 31 38 5d 29 2b 0d 20 |[17]*z+a|[18])+. |
|00003d20| 20 61 5b 32 31 5d 2a 79 | 33 2b 79 32 2a 28 32 2a | a[21]*y|3+y2*(2*|
|00003d30| 61 5b 32 33 5d 2a 7a 2b | 61 5b 32 34 5d 29 2b 79 |a[23]*z+|a[24])+y|
|00003d40| 2a 28 33 2a 61 5b 32 36 | 5d 2a 7a 32 2b 32 2a 61 |*(3*a[26|]*z2+2*a|
|00003d50| 5b 32 37 5d 2a 7a 2b 61 | 5b 32 38 5d 29 2b 0d 20 |[27]*z+a|[28])+. |
|00003d60| 20 34 2a 61 5b 33 30 5d | 2a 7a 33 2b 33 2a 61 5b | 4*a[30]|*z3+3*a[|
|00003d70| 33 31 5d 2a 7a 32 2b 32 | 2a 61 5b 33 32 5d 2a 7a |31]*z2+2|*a[32]*z|
|00003d80| 2b 61 5b 33 33 5d 3b 0d | 20 20 7d 0d 7d 0d 0d 69 |+a[33];.| }.}..i|
|00003d90| 6e 74 20 49 6e 73 69 64 | 65 5f 50 6f 6c 79 20 28 |nt Insid|e_Poly (|
|00003da0| 49 50 6f 69 6e 74 2c 20 | 4f 62 6a 65 63 74 29 0d |IPoint, |Object).|
|00003db0| 56 45 43 54 4f 52 20 2a | 49 50 6f 69 6e 74 3b 0d |VECTOR *|IPoint;.|
|00003dc0| 4f 42 4a 45 43 54 20 2a | 4f 62 6a 65 63 74 3b 0d |OBJECT *|Object;.|
|00003dd0| 7b 0d 56 45 43 54 4f 52 | 20 4e 65 77 5f 50 6f 69 |{.VECTOR| New_Poi|
|00003de0| 6e 74 3b 0d 44 42 4c 20 | 52 65 73 75 6c 74 3b 0d |nt;.DBL |Result;.|
|00003df0| 0d 2f 2a 20 54 72 61 6e | 73 66 6f 72 6d 20 74 68 |./* Tran|sform th|
|00003e00| 65 20 70 6f 69 6e 74 20 | 69 6e 74 6f 20 70 6f 6c |e point |into pol|
|00003e10| 79 6e 6f 6d 69 61 6c 27 | 73 20 73 70 61 63 65 20 |ynomial'|s space |
|00003e20| 2a 2f 0d 69 66 20 28 28 | 28 50 4f 4c 59 20 2a 29 |*/.if ((|(POLY *)|
|00003e30| 4f 62 6a 65 63 74 29 2d | 3e 54 72 61 6e 73 20 21 |Object)-|>Trans !|
|00003e40| 3d 20 4e 55 4c 4c 29 0d | 4d 49 6e 76 54 72 61 6e |= NULL).|MInvTran|
|00003e50| 73 50 6f 69 6e 74 28 26 | 4e 65 77 5f 50 6f 69 6e |sPoint(&|New_Poin|
|00003e60| 74 2c 20 49 50 6f 69 6e | 74 2c 20 28 28 50 4f 4c |t, IPoin|t, ((POL|
|00003e70| 59 20 2a 29 4f 62 6a 65 | 63 74 29 2d 3e 54 72 61 |Y *)Obje|ct)->Tra|
|00003e80| 6e 73 29 3b 0d 65 6c 73 | 65 0d 20 20 4e 65 77 5f |ns);.els|e. New_|
|00003e90| 50 6f 69 6e 74 20 3d 20 | 2a 49 50 6f 69 6e 74 3b |Point = |*IPoint;|
|00003ea0| 0d 0d 52 65 73 75 6c 74 | 20 3d 20 69 6e 73 69 64 |..Result| = insid|
|00003eb0| 65 28 26 4e 65 77 5f 50 | 6f 69 6e 74 2c 20 28 28 |e(&New_P|oint, ((|
|00003ec0| 50 4f 4c 59 20 2a 29 4f | 62 6a 65 63 74 29 2d 3e |POLY *)O|bject)->|
|00003ed0| 4f 72 64 65 72 2c 20 28 | 28 50 4f 4c 59 20 2a 29 |Order, (|(POLY *)|
|00003ee0| 4f 62 6a 65 63 74 29 2d | 3e 43 6f 65 66 66 73 29 |Object)-|>Coeffs)|
|00003ef0| 3b 0d 69 66 20 28 52 65 | 73 75 6c 74 20 3c 20 53 |;.if (Re|sult < S|
|00003f00| 6d 61 6c 6c 5f 54 6f 6c | 65 72 61 6e 63 65 29 0d |mall_Tol|erance).|
|00003f10| 72 65 74 75 72 6e 20 28 | 28 69 6e 74 29 28 31 2d |return (|(int)(1-|
|00003f20| 28 28 50 4f 4c 59 20 2a | 29 4f 62 6a 65 63 74 29 |((POLY *|)Object)|
|00003f30| 2d 3e 49 6e 76 65 72 74 | 65 64 29 29 3b 0d 65 6c |->Invert|ed));.el|
|00003f40| 73 65 0d 20 20 72 65 74 | 75 72 6e 20 28 28 69 6e |se. ret|urn ((in|
|00003f50| 74 29 28 28 50 4f 4c 59 | 20 2a 29 4f 62 6a 65 63 |t)((POLY| *)Objec|
|00003f60| 74 29 2d 3e 49 6e 76 65 | 72 74 65 64 29 3b 0d 7d |t)->Inve|rted);.}|
|00003f70| 0d 0d 2f 2a 20 4e 6f 72 | 6d 61 6c 20 74 6f 20 61 |../* Nor|mal to a|
|00003f80| 20 70 6f 6c 79 6e 6f 6d | 69 61 6c 20 2a 2f 0d 76 | polynom|ial */.v|
|00003f90| 6f 69 64 20 50 6f 6c 79 | 5f 4e 6f 72 6d 61 6c 28 |oid Poly|_Normal(|
|00003fa0| 52 65 73 75 6c 74 2c 20 | 4f 62 6a 65 63 74 2c 20 |Result, |Object, |
|00003fb0| 49 50 6f 69 6e 74 29 0d | 56 45 43 54 4f 52 20 2a |IPoint).|VECTOR *|
|00003fc0| 52 65 73 75 6c 74 2c 20 | 2a 49 50 6f 69 6e 74 3b |Result, |*IPoint;|
|00003fd0| 0d 4f 42 4a 45 43 54 20 | 2a 4f 62 6a 65 63 74 3b |.OBJECT |*Object;|
|00003fe0| 0d 7b 0d 44 42 4c 20 76 | 61 6c 3b 0d 56 45 43 54 |.{.DBL v|al;.VECT|
|00003ff0| 4f 52 20 4e 65 77 5f 50 | 6f 69 6e 74 3b 0d 50 4f |OR New_P|oint;.PO|
|00004000| 4c 59 20 2a 53 68 61 70 | 65 20 3d 20 28 50 4f 4c |LY *Shap|e = (POL|
|00004010| 59 20 2a 29 4f 62 6a 65 | 63 74 3b 0d 0d 2f 2a 20 |Y *)Obje|ct;../* |
|00004020| 54 72 61 6e 73 66 6f 72 | 6d 20 74 68 65 20 70 6f |Transfor|m the po|
|00004030| 69 6e 74 20 69 6e 74 6f | 20 74 68 65 20 70 6f 6c |int into| the pol|
|00004040| 79 6e 6f 6d 69 61 6c 73 | 20 73 70 61 63 65 20 2a |ynomials| space *|
|00004050| 2f 0d 69 66 20 28 53 68 | 61 70 65 2d 3e 54 72 61 |/.if (Sh|ape->Tra|
|00004060| 6e 73 20 21 3d 20 4e 55 | 4c 4c 29 0d 4d 49 6e 76 |ns != NU|LL).MInv|
|00004070| 54 72 61 6e 73 50 6f 69 | 6e 74 28 26 4e 65 77 5f |TransPoi|nt(&New_|
|00004080| 50 6f 69 6e 74 2c 20 49 | 50 6f 69 6e 74 2c 20 53 |Point, I|Point, S|
|00004090| 68 61 70 65 2d 3e 54 72 | 61 6e 73 29 3b 0d 65 6c |hape->Tr|ans);.el|
|000040a0| 73 65 0d 20 20 4e 65 77 | 5f 50 6f 69 6e 74 20 3d |se. New|_Point =|
|000040b0| 20 2a 49 50 6f 69 6e 74 | 3b 0d 0d 69 66 20 28 28 | *IPoint|;..if ((|
|000040c0| 28 50 4f 4c 59 20 2a 29 | 4f 62 6a 65 63 74 29 2d |(POLY *)|Object)-|
|000040d0| 3e 4f 72 64 65 72 20 3e | 20 34 29 0d 6e 6f 72 6d |>Order >| 4).norm|
|000040e0| 61 6c 30 28 52 65 73 75 | 6c 74 2c 20 53 68 61 70 |al0(Resu|lt, Shap|
|000040f0| 65 2d 3e 4f 72 64 65 72 | 2c 20 53 68 61 70 65 2d |e->Order|, Shape-|
|00004100| 3e 43 6f 65 66 66 73 2c | 20 26 4e 65 77 5f 50 6f |>Coeffs,| &New_Po|
|00004110| 69 6e 74 29 3b 0d 65 6c | 73 65 0d 20 20 6e 6f 72 |int);.el|se. nor|
|00004120| 6d 61 6c 31 28 52 65 73 | 75 6c 74 2c 20 53 68 61 |mal1(Res|ult, Sha|
|00004130| 70 65 2d 3e 4f 72 64 65 | 72 2c 20 53 68 61 70 65 |pe->Orde|r, Shape|
|00004140| 2d 3e 43 6f 65 66 66 73 | 2c 20 26 4e 65 77 5f 50 |->Coeffs|, &New_P|
|00004150| 6f 69 6e 74 29 3b 0d 0d | 2f 2a 20 54 72 61 6e 73 |oint);..|/* Trans|
|00004160| 66 6f 72 6d 20 62 61 63 | 6b 20 74 6f 20 77 6f 72 |form bac|k to wor|
|00004170| 6c 64 20 73 70 61 63 65 | 20 2a 2f 0d 69 66 20 28 |ld space| */.if (|
|00004180| 53 68 61 70 65 2d 3e 54 | 72 61 6e 73 20 21 3d 20 |Shape->T|rans != |
|00004190| 4e 55 4c 4c 29 0d 4d 54 | 72 61 6e 73 4e 6f 72 6d |NULL).MT|ransNorm|
|000041a0| 61 6c 28 52 65 73 75 6c | 74 2c 20 52 65 73 75 6c |al(Resul|t, Resul|
|000041b0| 74 2c 20 53 68 61 70 65 | 2d 3e 54 72 61 6e 73 29 |t, Shape|->Trans)|
|000041c0| 3b 0d 0d 2f 2a 20 4e 6f | 72 6d 61 6c 69 7a 65 20 |;../* No|rmalize |
|000041d0| 28 61 63 63 6f 75 6e 74 | 69 6e 67 20 66 6f 72 20 |(account|ing for |
|000041e0| 74 68 65 20 70 6f 73 73 | 69 62 69 6c 69 74 79 20 |the poss|ibility |
|000041f0| 6f 66 20 61 20 30 20 6c | 65 6e 67 74 68 20 6e 6f |of a 0 l|ength no|
|00004200| 72 6d 61 6c 29 20 2a 2f | 0d 56 44 6f 74 28 76 61 |rmal) */|.VDot(va|
|00004210| 6c 2c 20 2a 52 65 73 75 | 6c 74 2c 20 2a 52 65 73 |l, *Resu|lt, *Res|
|00004220| 75 6c 74 29 3b 0d 69 66 | 20 28 76 61 6c 20 3e 20 |ult);.if| (val > |
|00004230| 30 2e 30 29 20 0d 20 20 | 7b 0d 20 20 76 61 6c 20 |0.0) . |{. val |
|00004240| 3d 20 31 2e 30 20 2f 20 | 73 71 72 74 28 76 61 6c |= 1.0 / |sqrt(val|
|00004250| 29 3b 0d 20 20 56 53 63 | 61 6c 65 45 71 28 2a 52 |);. VSc|aleEq(*R|
|00004260| 65 73 75 6c 74 2c 20 76 | 61 6c 29 3b 0d 20 20 7d |esult, v|al);. }|
|00004270| 0d 65 6c 73 65 0d 20 20 | 4d 61 6b 65 5f 56 65 63 |.else. |Make_Vec|
|00004280| 74 6f 72 28 52 65 73 75 | 6c 74 2c 20 31 2c 20 30 |tor(Resu|lt, 1, 0|
|00004290| 2c 20 30 29 0d 20 20 20 | 20 7d 0d 0d 20 20 2f 2a |, 0). | }.. /*|
|000042a0| 20 4d 61 6b 65 20 61 20 | 63 6f 70 79 20 6f 66 20 | Make a |copy of |
|000042b0| 61 20 70 6f 6c 79 6e 6f | 6d 69 61 6c 20 6f 62 6a |a polyno|mial obj|
|000042c0| 65 63 74 20 2a 2f 0d 20 | 20 76 6f 69 64 20 2a 43 |ect */. | void *C|
|000042d0| 6f 70 79 5f 50 6f 6c 79 | 28 4f 62 6a 65 63 74 29 |opy_Poly|(Object)|
|000042e0| 0d 20 20 20 20 4f 42 4a | 45 43 54 20 2a 4f 62 6a |. OBJ|ECT *Obj|
|000042f0| 65 63 74 3b 0d 7b 0d 50 | 4f 4c 59 20 2a 4e 65 77 |ect;.{.P|OLY *New|
|00004300| 3b 0d 69 6e 74 20 69 3b | 0d 0d 4e 65 77 20 3d 20 |;.int i;|..New = |
|00004310| 43 72 65 61 74 65 5f 50 | 6f 6c 79 20 28 28 28 50 |Create_P|oly (((P|
|00004320| 4f 4c 59 20 2a 29 4f 62 | 6a 65 63 74 29 2d 3e 4f |OLY *)Ob|ject)->O|
|00004330| 72 64 65 72 29 3b 0d 4e | 65 77 2d 3e 53 74 75 72 |rder);.N|ew->Stur|
|00004340| 6d 5f 46 6c 61 67 20 3d | 20 28 28 50 4f 4c 59 20 |m_Flag =| ((POLY |
|00004350| 2a 29 4f 62 6a 65 63 74 | 29 2d 3e 53 74 75 72 6d |*)Object|)->Sturm|
|00004360| 5f 46 6c 61 67 3b 0d 4e | 65 77 2d 3e 49 6e 76 65 |_Flag;.N|ew->Inve|
|00004370| 72 74 65 64 20 3d 20 28 | 28 50 4f 4c 59 20 2a 29 |rted = (|(POLY *)|
|00004380| 4f 62 6a 65 63 74 29 2d | 3e 49 6e 76 65 72 74 65 |Object)-|>Inverte|
|00004390| 64 3b 0d 0d 4e 65 77 2d | 3e 54 72 61 6e 73 20 3d |d;..New-|>Trans =|
|000043a0| 20 43 6f 70 79 5f 54 72 | 61 6e 73 66 6f 72 6d 28 | Copy_Tr|ansform(|
|000043b0| 28 28 50 4f 4c 59 20 2a | 29 4f 62 6a 65 63 74 29 |((POLY *|)Object)|
|000043c0| 2d 3e 54 72 61 6e 73 29 | 3b 0d 0d 66 6f 72 20 28 |->Trans)|;..for (|
|000043d0| 69 3d 30 3b 69 3c 74 65 | 72 6d 5f 63 6f 75 6e 74 |i=0;i<te|rm_count|
|000043e0| 73 28 4e 65 77 2d 3e 4f | 72 64 65 72 29 3b 69 2b |s(New->O|rder);i+|
|000043f0| 2b 29 0d 4e 65 77 2d 3e | 43 6f 65 66 66 73 5b 69 |+).New->|Coeffs[i|
|00004400| 5d 20 3d 20 28 28 50 4f | 4c 59 20 2a 29 4f 62 6a |] = ((PO|LY *)Obj|
|00004410| 65 63 74 29 2d 3e 43 6f | 65 66 66 73 5b 69 5d 3b |ect)->Co|effs[i];|
|00004420| 0d 72 65 74 75 72 6e 20 | 28 4e 65 77 29 3b 0d 7d |.return |(New);.}|
|00004430| 0d 0d 76 6f 69 64 20 54 | 72 61 6e 73 6c 61 74 65 |..void T|ranslate|
|00004440| 5f 50 6f 6c 79 20 28 4f | 62 6a 65 63 74 2c 20 56 |_Poly (O|bject, V|
|00004450| 65 63 74 6f 72 29 0d 4f | 42 4a 45 43 54 20 2a 4f |ector).O|BJECT *O|
|00004460| 62 6a 65 63 74 3b 0d 56 | 45 43 54 4f 52 20 2a 56 |bject;.V|ECTOR *V|
|00004470| 65 63 74 6f 72 3b 0d 7b | 0d 54 52 41 4e 53 46 4f |ector;.{|.TRANSFO|
|00004480| 52 4d 20 54 72 61 6e 73 | 3b 0d 43 6f 6d 70 75 74 |RM Trans|;.Comput|
|00004490| 65 5f 54 72 61 6e 73 6c | 61 74 69 6f 6e 5f 54 72 |e_Transl|ation_Tr|
|000044a0| 61 6e 73 66 6f 72 6d 28 | 26 54 72 61 6e 73 2c 20 |ansform(|&Trans, |
|000044b0| 56 65 63 74 6f 72 29 3b | 0d 54 72 61 6e 73 66 6f |Vector);|.Transfo|
|000044c0| 72 6d 5f 50 6f 6c 79 28 | 4f 62 6a 65 63 74 2c 20 |rm_Poly(|Object, |
|000044d0| 26 54 72 61 6e 73 29 3b | 0d 7d 0d 0d 76 6f 69 64 |&Trans);|.}..void|
|000044e0| 20 52 6f 74 61 74 65 5f | 50 6f 6c 79 20 28 4f 62 | Rotate_|Poly (Ob|
|000044f0| 6a 65 63 74 2c 20 56 65 | 63 74 6f 72 29 0d 4f 42 |ject, Ve|ctor).OB|
|00004500| 4a 45 43 54 20 2a 4f 62 | 6a 65 63 74 3b 0d 56 45 |JECT *Ob|ject;.VE|
|00004510| 43 54 4f 52 20 2a 56 65 | 63 74 6f 72 3b 0d 7b 0d |CTOR *Ve|ctor;.{.|
|00004520| 54 52 41 4e 53 46 4f 52 | 4d 20 54 72 61 6e 73 3b |TRANSFOR|M Trans;|
|00004530| 0d 43 6f 6d 70 75 74 65 | 5f 52 6f 74 61 74 69 6f |.Compute|_Rotatio|
|00004540| 6e 5f 54 72 61 6e 73 66 | 6f 72 6d 28 26 54 72 61 |n_Transf|orm(&Tra|
|00004550| 6e 73 2c 20 56 65 63 74 | 6f 72 29 3b 0d 54 72 61 |ns, Vect|or);.Tra|
|00004560| 6e 73 66 6f 72 6d 5f 50 | 6f 6c 79 28 4f 62 6a 65 |nsform_P|oly(Obje|
|00004570| 63 74 2c 20 26 54 72 61 | 6e 73 29 3b 0d 7d 0d 0d |ct, &Tra|ns);.}..|
|00004580| 76 6f 69 64 20 53 63 61 | 6c 65 5f 50 6f 6c 79 20 |void Sca|le_Poly |
|00004590| 28 4f 62 6a 65 63 74 2c | 20 56 65 63 74 6f 72 29 |(Object,| Vector)|
|000045a0| 0d 4f 42 4a 45 43 54 20 | 2a 4f 62 6a 65 63 74 3b |.OBJECT |*Object;|
|000045b0| 0d 56 45 43 54 4f 52 20 | 2a 56 65 63 74 6f 72 3b |.VECTOR |*Vector;|
|000045c0| 0d 7b 0d 54 52 41 4e 53 | 46 4f 52 4d 20 54 72 61 |.{.TRANS|FORM Tra|
|000045d0| 6e 73 3b 0d 43 6f 6d 70 | 75 74 65 5f 53 63 61 6c |ns;.Comp|ute_Scal|
|000045e0| 69 6e 67 5f 54 72 61 6e | 73 66 6f 72 6d 28 26 54 |ing_Tran|sform(&T|
|000045f0| 72 61 6e 73 2c 20 56 65 | 63 74 6f 72 29 3b 0d 54 |rans, Ve|ctor);.T|
|00004600| 72 61 6e 73 66 6f 72 6d | 5f 50 6f 6c 79 28 4f 62 |ransform|_Poly(Ob|
|00004610| 6a 65 63 74 2c 20 26 54 | 72 61 6e 73 29 3b 0d 7d |ject, &T|rans);.}|
|00004620| 0d 0d 76 6f 69 64 20 54 | 72 61 6e 73 66 6f 72 6d |..void T|ransform|
|00004630| 5f 50 6f 6c 79 28 4f 62 | 6a 65 63 74 2c 54 72 61 |_Poly(Ob|ject,Tra|
|00004640| 6e 73 29 0d 4f 42 4a 45 | 43 54 20 2a 4f 62 6a 65 |ns).OBJE|CT *Obje|
|00004650| 63 74 3b 0d 54 52 41 4e | 53 46 4f 52 4d 20 2a 54 |ct;.TRAN|SFORM *T|
|00004660| 72 61 6e 73 3b 0d 7b 0d | 69 66 20 28 28 28 50 4f |rans;.{.|if (((PO|
|00004670| 4c 59 20 2a 29 4f 62 6a | 65 63 74 29 2d 3e 54 72 |LY *)Obj|ect)->Tr|
|00004680| 61 6e 73 20 3d 3d 20 4e | 55 4c 4c 29 0d 28 28 50 |ans == N|ULL).((P|
|00004690| 4f 4c 59 20 2a 29 4f 62 | 6a 65 63 74 29 2d 3e 54 |OLY *)Ob|ject)->T|
|000046a0| 72 61 6e 73 20 3d 20 43 | 72 65 61 74 65 5f 54 72 |rans = C|reate_Tr|
|000046b0| 61 6e 73 66 6f 72 6d 28 | 29 3b 0d 72 65 63 6f 6d |ansform(|);.recom|
|000046c0| 70 75 74 65 5f 62 62 6f | 78 28 26 4f 62 6a 65 63 |pute_bbo|x(&Objec|
|000046d0| 74 2d 3e 42 6f 75 6e 64 | 73 2c 20 54 72 61 6e 73 |t->Bound|s, Trans|
|000046e0| 29 3b 0d 43 6f 6d 70 6f | 73 65 5f 54 72 61 6e 73 |);.Compo|se_Trans|
|000046f0| 66 6f 72 6d 73 28 28 28 | 50 4f 4c 59 20 2a 29 4f |forms(((|POLY *)O|
|00004700| 62 6a 65 63 74 29 2d 3e | 54 72 61 6e 73 2c 20 54 |bject)->|Trans, T|
|00004710| 72 61 6e 73 29 3b 0d 7d | 0d 0d 76 6f 69 64 20 49 |rans);.}|..void I|
|00004720| 6e 76 65 72 74 5f 50 6f | 6c 79 28 4f 62 6a 65 63 |nvert_Po|ly(Objec|
|00004730| 74 29 0d 4f 42 4a 45 43 | 54 20 2a 4f 62 6a 65 63 |t).OBJEC|T *Objec|
|00004740| 74 3b 0d 7b 0d 28 28 50 | 4f 4c 59 20 2a 29 20 4f |t;.{.((P|OLY *) O|
|00004750| 62 6a 65 63 74 29 2d 3e | 49 6e 76 65 72 74 65 64 |bject)->|Inverted|
|00004760| 20 3d 20 31 20 2d 20 28 | 28 50 4f 4c 59 20 2a 29 | = 1 - (|(POLY *)|
|00004770| 4f 62 6a 65 63 74 29 2d | 3e 49 6e 76 65 72 74 65 |Object)-|>Inverte|
|00004780| 64 3b 0d 7d 0d 0d 50 4f | 4c 59 20 2a 43 72 65 61 |d;.}..PO|LY *Crea|
|00004790| 74 65 5f 50 6f 6c 79 28 | 4f 72 64 65 72 29 0d 69 |te_Poly(|Order).i|
|000047a0| 6e 74 20 4f 72 64 65 72 | 3b 0d 7b 0d 50 4f 4c 59 |nt Order|;.{.POLY|
|000047b0| 20 2a 4e 65 77 3b 0d 69 | 6e 74 20 69 3b 0d 0d 69 | *New;.i|nt i;..i|
|000047c0| 66 20 28 28 4e 65 77 20 | 3d 20 28 50 4f 4c 59 20 |f ((New |= (POLY |
|000047d0| 2a 29 20 6d 61 6c 6c 6f | 63 20 28 73 69 7a 65 6f |*) mallo|c (sizeo|
|000047e0| 66 20 28 50 4f 4c 59 29 | 29 29 20 3d 3d 20 4e 55 |f (POLY)|)) == NU|
|000047f0| 4c 4c 29 0d 4d 41 45 72 | 72 6f 72 20 28 22 70 6f |LL).MAEr|ror ("po|
|00004800| 6c 79 22 29 3b 0d 0d 49 | 4e 49 54 5f 4f 42 4a 45 |ly");..I|NIT_OBJE|
|00004810| 43 54 5f 46 49 45 4c 44 | 53 28 4e 65 77 2c 50 4f |CT_FIELD|S(New,PO|
|00004820| 4c 59 5f 4f 42 4a 45 43 | 54 2c 20 26 50 6f 6c 79 |LY_OBJEC|T, &Poly|
|00004830| 5f 4d 65 74 68 6f 64 73 | 29 3b 0d 4e 65 77 2d 3e |_Methods|);.New->|
|00004840| 4f 72 64 65 72 20 3d 20 | 4f 72 64 65 72 3b 0d 4e |Order = |Order;.N|
|00004850| 65 77 2d 3e 53 74 75 72 | 6d 5f 46 6c 61 67 20 3d |ew->Stur|m_Flag =|
|00004860| 20 46 41 4c 53 45 3b 0d | 4e 65 77 2d 3e 54 72 61 | FALSE;.|New->Tra|
|00004870| 6e 73 20 3d 20 4e 55 4c | 4c 3b 0d 4e 65 77 2d 3e |ns = NUL|L;.New->|
|00004880| 49 6e 76 65 72 74 65 64 | 20 3d 20 46 41 4c 53 45 |Inverted| = FALSE|
|00004890| 3b 0d 4e 65 77 2d 3e 43 | 6f 65 66 66 73 20 3d 20 |;.New->C|oeffs = |
|000048a0| 28 44 42 4c 20 2a 29 6d | 61 6c 6c 6f 63 28 74 65 |(DBL *)m|alloc(te|
|000048b0| 72 6d 5f 63 6f 75 6e 74 | 73 28 4f 72 64 65 72 29 |rm_count|s(Order)|
|000048c0| 20 2a 20 73 69 7a 65 6f | 66 28 44 42 4c 29 29 3b | * sizeo|f(DBL));|
|000048d0| 0d 69 66 20 28 4e 65 77 | 2d 3e 43 6f 65 66 66 73 |.if (New|->Coeffs|
|000048e0| 20 3d 3d 20 4e 55 4c 4c | 29 0d 4d 41 45 72 72 6f | == NULL|).MAErro|
|000048f0| 72 28 22 63 6f 65 66 66 | 69 63 69 65 6e 74 73 20 |r("coeff|icients |
|00004900| 66 6f 72 20 50 4f 4c 59 | 22 29 3b 0d 66 6f 72 20 |for POLY|");.for |
|00004910| 28 69 3d 30 3b 69 3c 74 | 65 72 6d 5f 63 6f 75 6e |(i=0;i<t|erm_coun|
|00004920| 74 73 28 4f 72 64 65 72 | 29 3b 69 2b 2b 29 0d 4e |ts(Order|);i++).N|
|00004930| 65 77 2d 3e 43 6f 65 66 | 66 73 5b 69 5d 20 3d 20 |ew->Coef|fs[i] = |
|00004940| 30 2e 30 3b 0d 0d 72 65 | 74 75 72 6e 20 28 4e 65 |0.0;..re|turn (Ne|
|00004950| 77 29 3b 0d 7d 0d 0d 76 | 6f 69 64 20 44 65 73 74 |w);.}..v|oid Dest|
|00004960| 72 6f 79 5f 50 6f 6c 79 | 28 4f 62 6a 65 63 74 29 |roy_Poly|(Object)|
|00004970| 0d 4f 42 4a 45 43 54 20 | 2a 4f 62 6a 65 63 74 3b |.OBJECT |*Object;|
|00004980| 0d 7b 0d 44 65 73 74 72 | 6f 79 5f 54 72 61 6e 73 |.{.Destr|oy_Trans|
|00004990| 66 6f 72 6d 20 28 28 28 | 50 4f 4c 59 20 2a 29 4f |form (((|POLY *)O|
|000049a0| 62 6a 65 63 74 29 2d 3e | 54 72 61 6e 73 29 3b 0d |bject)->|Trans);.|
|000049b0| 66 72 65 65 20 28 28 28 | 50 4f 4c 59 20 2a 29 4f |free (((|POLY *)O|
|000049c0| 62 6a 65 63 74 29 2d 3e | 43 6f 65 66 66 73 29 3b |bject)->|Coeffs);|
|000049d0| 0d 66 72 65 65 20 28 4f | 62 6a 65 63 74 29 3b 0d |.free (O|bject);.|
|000049e0| 7d 0d 0d 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |}.......|........|
|000049f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004a00| 00 00 01 00 00 00 01 6e | 00 00 00 6e 00 00 00 3e |.......n|...n...>|
|00004a10| 20 20 20 20 20 20 20 20 | 20 20 20 57 61 72 6e 5f | | Warn_|
|00004a20| 53 74 61 74 65 28 54 6f | 6b 65 6e 2e 54 6f 6b 65 |State(To|ken.Toke|
|00004a30| 06 50 4f 4c 59 2e 43 da | 02 00 00 00 54 45 58 54 |.POLY.C.|....TEXT|
|00004a40| 4d 50 53 20 01 08 ff ff | ff ff 00 00 00 00 16 aa |MPS ....|........|
|00004a50| 00 00 54 45 58 54 4d 50 | 53 20 01 08 ff ff ff ff |..TEXTMP|S ......|
|00004a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004a70| 00 00 a8 7d b4 86 00 00 | 49 63 00 00 01 ac 20 20 |...}....|Ic.... |
|00004a80| 20 20 20 20 20 20 20 20 | 50 69 67 6d 65 6e 74 2d | |Pigment-|
|00004a90| 3e 43 6f 6c 6f 75 72 5f | 4d 61 70 20 3d 20 50 61 |>Colour_|Map = Pa|
|00004aa0| 72 73 65 5f 43 6f 6c 6f | 75 72 5f 4c 69 73 74 28 |rse_Colo|ur_List(|
|00004ab0| 33 29 3b 0d 20 20 20 20 | 20 20 20 20 20 45 4e 44 |3);. | END|
|00004ac0| 5f 43 41 53 45 0d 0d 20 | 20 20 20 20 20 20 20 20 |_CASE.. | |
|00004ad0| 43 41 53 45 20 28 49 4d | 41 47 45 5f 4d 41 50 5f |CASE (IM|AGE_MAP_|
|00004ae0| 54 4f 4b 45 4e 29 0d 20 | 20 20 20 20 20 20 20 20 |TOKEN). | |
|00004af0| 20 20 57 61 72 6e 5f 53 | 74 61 74 65 28 54 6f 6b | Warn_S|tate(Tok|
|00004b00| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 2a 2a 2a |...H..Mo|naco.***|
|00004b10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004b20| 2a 0d 2a 20 20 20 00 06 | 00 04 00 3c 00 24 01 dd |*.* ..|...<.$..|
|00004b30| 02 3d 00 3c 00 24 01 dd | 02 3d a8 7d b4 86 00 00 |.=.<.$..|.=.}....|
|00004b40| 00 00 00 00 00 00 00 00 | 00 00 01 00 00 00 00 1e |........|........|
|00004b50| 00 3c 00 24 01 dd 02 3d | 00 3c 00 24 01 dd 02 3d |.<.$...=|.<.$...=|
|00004b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004b70| 01 00 00 00 01 6e 00 00 | 00 6e 00 00 00 3e 00 8d |.....n..|.n...>..|
|00004b80| 3b f8 18 3e 00 00 00 1c | 00 3e 00 00 4d 50 53 52 |;..>....|.>..MPSR|
|00004b90| 00 01 00 0a 03 ed ff ff | 00 00 00 00 00 00 00 00 |........|........|
|00004ba0| 03 f0 ff ff 00 00 00 4c | 00 8f 98 18 00 00 00 00 |.......L|........|
|00004bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004bf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+